Nano Hash - криптовалюты, майнинг, программирование

Как переименовать и добавить суффикс увеличивающегося числа к нескольким файлам в пакетном сценарии?

У меня есть 500 поступающих файлов, и мне нужно сначала проверить, существуют ли какие-либо файлы, а затем переименовать их все независимо от их имени файла (файлы названы на другом языке).

Нет необходимости обрабатывать их в любом порядке.

Переименовать:

1.  “¦X¼d¬f-20110703-¦+¦dñHÑ-ª-¦=¬¦.xls” 
2.  “¦X¼d¬f-20110707-¦+¡¦-+¡8.xls”
3.  “¦X¼d¬f-20110707-¦+¡¦ñj¦«.xls”
4.  “¦X¼d¬f-20110708-¦+¡¦¬M¼n.xls”
5.  “¦X¼d¬f-20110713-¦d¼O¼n¦hÑP.xls”
.
.
.
500

Кому:

“TWN_CH_INV_VISIT_FORM_01.xls”
“TWN_CH_INV_VISIT_FORM_02.xls”
“TWN_CH_INV_VISIT_FORM_03.xls”
“TWN_CH_INV_VISIT_FORM_04.xls”
“TWN_CH_INV_VISIT_FORM_05.xls”
.
.
.
“TWN_CH_INV_VISIT_FORM_500.xls”

Надеюсь, вы могли бы помочь мне в этом. Я пытался сделать это в течение нескольких недель.


  • пауэршелл? или команд? или что-то другое? 14.07.2011
  • что вы пробовали в течение нескольких недель до сих пор? какие проблемы вы нашли? простой FOR со счетом (SET /A) должен делать то, что вам нужно. См. HELP FOR и HELP SET 14.07.2011
  • Взгляните на этот поток: stackoverflow.com/questions/6515453/ 14.07.2011

Ответы:


1

простой FOR со счетом (SET /A) должен делать то, что вам нужно.

setlocal enabledelayedexpansion
SET /A COUNT=0
FOR %%A IN (*.xls) DO (
  SET /A COUNT+=1
  REN "%%A" "TWN_CH_INV_VIST_FORM_!COUNT!.xls"
)

См. HELP FOR и HELP SET

14.07.2011
  • Спасибо! Это сделало работу, но пропустил 1 файл. Из 14 файлов все переименованы, кроме TWN_CH_INV_VIST_FORM_7.xls 19.07.2011
  • С этим ответом есть серьезные проблемы. См. мой ответ для получения дополнительной информации, а также надежного решения. 15.05.2016

  • 2

    Это обманчиво сложный вопрос.

    У 5-летнего ответа PA есть несколько проблем.

    1) Цикл FOR начинает итерацию без буферизации всего дерева каталогов, поэтому он потенциально может переименовать файл, который уже был переименован. Я считаю, что именно поэтому файл 7 отсутствует в комментарии r0mmel.

    2) Задержка расширения происходит после расширения переменных for, поэтому имя файла будет повреждено, и переименование завершится ошибкой, если имя содержит символ !.

    3) Переименование может завершиться ошибкой, если уже существует файл TWN_CH_INV_VIST_FORM_n.xls с таким же номером.

    Сначала я думал, что смогу решить проблему, используя следующее:

    @echo off
    for /f "delims=: tokens=1*" %%A in (
      'dir /b *.xls ^| findstr /n "^"'
    ) do ren "%%B" "TWN_CH_INV_VIST_FORM_%%A.xls.new"
    ren *.txt.new *.
    

    Я использую DIR /B для вывода списка файлов и передаю результат в FINDSTR, чтобы добавить к каждому имени файла префикс номера строки, за которым следует двоеточие.

    Затем я использую FOR /F для повторения и анализа результатов в число и имя файла. FOR /F буферизует весь результат перед итерацией, поэтому мне не нужно беспокоиться о переименовании одного и того же файла дважды.

    Сначала я даю переименованным файлам «расширение» .xls.new на тот случай, если в вашем каталоге уже есть файлы, соответствующие шаблону TWN_CH_INV_VIST_FORM_n.xls. Вам не нужны конфликты имен. Затем последняя команда REN просто удаляет расширение .new, чтобы оставить желаемое .xls.

    НО, я только что заметил, что исходные имена файлов содержат много странных символов, которые могут включать юникод, которого нет в текущей кодовой странице. FOR /F плохо работает с юникодом.

    Есть еще одна незначительная проблема, заключающаяся в том, что приведенное выше число не дополняет число до фиксированной ширины. (это можно было бы решить достаточно легко)

    Итак, пришло время раскрыть мою утилиту переименования регулярных выражений JREN.BAT< /а>. Это чистый сценарий (гибридный пакетный / JScript), который изначально запускается на любом компьютере с Windows, начиная с XP. Он имеет встроенное средство для включения числа с фиксированной шириной в новое имя и отлично работает с юникодом. Я по-прежнему временно даю новому имени расширение «.xls.new», чтобы избежать конфликтов имен.

    @echo off
    call jren "^.*" "'TWN_CH_INV_VIST_FORM_'+$n+'.xls.new'" /j /npad 3 /fm *.xls
    ren *.xls.new *.
    

    Я решил дополнить увеличивающееся число до 3 цифр вместо 2, потому что ОП сказал, что может быть 500 файлов.

    Полная документация по JREN.BAT доступна из командной строки через jren /? или jren /??, если вам нужен постраничный вывод.

    15.05.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..