#batch-file #directory
Вопрос:
Я пытаюсь переименовать кучу папок с фотографиями, например: Летние каникулы (1970) бла-бла-бла в Летние каникулы (1970), поэтому имена нужно сократить до )
Решение, которое я нашел, работает нормально, пока я не удалю эхо, а затем не получу синтаксическую ошибку.
@Echo off
Cd /D "C:Temp"
For /f "delims=" %%A in (
'Dir /B/S/O-N/AD "*(*)*"'
) Do For /f "tokens=1,2 delims=()" %%B in ( "%%A"
) Do Echo Ren "%%~A" "%%B(%%C)"
Комментарии:
1. и тогда я получаю синтаксическую ошибку -бессмысленное описание проблемы. Какое именно сообщение об ошибке вы получаете?
2. Я бы предположил, что это потому, что вы неправильно используете команду
Ren
ame. Команда переименования ожидает имя только в качестве второго аргумента, а не полный путь. Для этого вам нужно будет изменить переменную результата из внешнего цикла for, чтобы расширить ее до имени и/или имени и расширения во внутреннем цикле for. Пример:@For /F "Delims=" %%G In ('Dir "C:Temp*(*)*" /A:D /B /O:-N /S 2^>NUL') Do @For /F "Delims=)" %%H In ("%%~nxG") Do @Ren "%%G" "%%H)"
3. сообщение об ошибке «Синтаксис команды неверен»
4. Спасибо @Compo, что отлично справился с задачей.