У вас есть 5 небольшие ошибки в коде , когда я рассмотрел его! BTW это плохая идея, чтобы изменить исходный код, без советов о том, что вы сделали в самой вопрос ...
- Переменная
fname
должна содержать только имя и расширение файла, поэтому модификатор ~nx
должен использоваться в переменной %%A
.
- Предложение
do
должно быть размещено в той же строке команды for
.
- В
ren
команды оба названия должны быть заключены в кавычках (не ошибка в это случая).
- Значок
&
используется для разделения двух команд в той же строке. Это должно быть быть командой после &
.
- Все ссылки на переменную, которая изменяется внутри цикла
for
, должна быть заключена в восклицательные знаки.
- Команда
endlocal
должна быть размещена после последней переменной с восклицательными знаками.
Я также модифицировал обоснование кода стандартным способом.
Это исправленный код:
set "source=C:\Users\Processed"
for /f "delims=" %%A in ('findstr /s /m /l /c:"949010" "%source%\*"') do (
set "fname=%%~nxA"
setlocal enabledelayedexpansion
set "fname=!fname:{=!"
ren "%%A" "!fname!"
copy /y "%source%\!fname!" "C:\Users\949010"
endlocal
)
Что ожидаемое имя файла после этого сценария работает? –
Я вижу, что у вас есть строка 'set 'fname =! Fname: {=%" '. Вы имели в виду сказать «set» fname =! Fname: {=! "' Вместо этого? – SomethingDark
Кроме того, 'ren' требует два аргумента - исходное имя файла и имя для изменения файла. – SomethingDark