Я переименовываю группу файлов, которые начинаются с TB-Practice и начинаются с P- .

Пока у меня есть эта партия

pushd %~dp0
for %%i in ("TB-Practice*.pdf") do (set fname=%%i) & call :rename
goto :eof
:rename
::Cuts off 1st eleven chars, then appends prefix
::P- is put in front of the file name
ren "%fname%" "P-%fname:~11%"
goto :eof

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

Что я делаю неправильно? При объявлении переменных нигде нет пробела.

2 ответа2

1

Если все исходные имена файлов содержат пробел, завершающий TB-Practice , их гораздо легче разделить.

В строке cmd:

@for %A in ("TB-Practice *.pdf") do @for /f "tokens=1*" %B in ("%A") do @echo Ren "%A" "P-%C"

или в пакетном файле:

pushd %~dp0
for %%A in ("TB-Practice *.pdf") do for /f "tokens=1*" %%B in ("%%A") do Ren "%%A" "P-%%C" 
popd
0

Глупо я понял после того, как я написал, что партия не удаляет это пространство после TB-Practice и поэтому пространство осталось. Решаемые.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .