Вы можете сделать это в пакетном файле, если вы используете функцию под названием «задержка exapansion», что не по умолчанию. Для того, чтобы включить его, вам нужно начать с cmd.exe/V переключатель:
cmd.exe /v
После этого на следующее пакетный скрипт заменит все пробелы в %% I с подчеркиванием, и выплюнуть результат из :
for /f "usebackq tokens=*" %%i in (`dir /b`) do (
set S=%%i
set T=!S: =_!
echo !T!
)
*** описание Vauge ... *** за исключением для самого цикла, интересные части этого являются:
- Строка подстановки, используя
%var:str1=str2%
синтаксис
- Задержка расширения с использованием
!var!
вместо %var%
Первое: замедленное расширение ... без этого, интерпретатор команд (по любой причине Microsoft решила его код как) будет оценивать все параметры первого, а затем запустить сценарий: так что эта версия сценария не работает:
for /f "usebackq tokens=*" %%i in (`dir /b`) do (
set S=%%i
set T=%S: =_%
echo %T%
)
с этой версией переменной «T» устанавливаются на последнее значение для цикла перед содержимым (...) блока фактически выполнить. Что не имеет для меня никакого смысла. Таким образом, при включенном отложенном выполнении мы можем использовать метки замедленной переменной выполнения, т. Е.! Var! а не% var%. Это дает нам правильный результат.
Другим умным битом является set T=!S: =_!
(который в основном говорит, что устанавливает T в S, заменяя каждый '' 'на S' _ '). Без задержки расширения это будет написано set T=%S: =_%
.
вы пробовали «процесс»/MyDirectory/Obama и Me/Private/TopSecretPictures/«'? – Etan
Для новых стандартов именования отдела я должен изменить все имена каталогов – Yaya