Изменить имя файла в пакетном скрипте

Мне нужно изменить имя файла в пакетном сценарии.

Ниже пример, который я сделал

SET date = 20210803
SET job = 69187

cd "H:\arbortray foldher\"
for %%i in (*.txt*) do REN %%i randum_%job%-text-%date%%%i

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


person Jon Schaller    schedule 23.09.2013    source источник


Ответы (2)


Проблемы:

A) В именах ваших переменных будут пробелы.
B) Команда CD нуждается в /d
C) В for in do есть ошибка, которую нужно обойти, изменив расширение и восстановив его позже.

@echo off
SET date=20210803
SET job=69187

cd /d "H:\arbortray foldher\"
for %%i in (*.txt) do REN "%%i" "randum_%job%-text-%date%%%~ni.tmp"
ren *.tmp *.txt
echo done
pause

Пробелы вызвали проблему, и в команде переименования вам нужны двойные кавычки для обслуживания пробелов.

person foxidrive    schedule 24.09.2013

взгляните на кроссплатформенный инструмент renamer.

person Lloyd    schedule 25.09.2013