Переименовать файлы на основе списка - PullRequest
0 голосов
/ 17 января 2019

Доступные методы, AFAIK: создание файла * .bat в Windows 7, который выполняет эту работу. Невозможно установить другие программы.

Допустим, у нас есть папка, содержащая некоторые файлы. У меня есть список, где каждый из этих файлов, в зависимости от имени файла, связан с идентификатором.

Теперь мне нужно скопировать эти файлы, основываясь на этом списке, куда-нибудь с соответствующим идентификатором в качестве имени файла.

Пример:

Файлы в папке:

10.txt
11.txt
12.txt

Список:

10 83
11 49
12 94

Результат должен быть:

10.txt → 83.txt
11.txt → 49.txt
12.txt → 94.txt

1 Ответ

0 голосов
/ 17 января 2019

В вашем вопросе не указано, хотите ли вы его для всех файлов, конкретных файлов или в вашем файле списка также будет указано расширение файлов, поэтому я буду использовать только ваши примеры:

@echo off
for /f "tokens=1,*" %%i in (list.txt) do (
   if exist "%%i.txt" %%j copy /Y "%%i.txt" "%%j.txt"

)

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

@echo off
for /f "tokens=1,*" %%i in (list.txt) do (
   if exist "%%i.txt" if not exist "%%j.txt copy "%%i.txt" "%%j.txt"
   if exist "%%j.txt" type "%%i.txt">>"%%j.txt"
)
...