Показать полную графическую версию : [решено] Как убрать из названий файлов и папок восклицательный знак?
Проблема такая, есть папка(-и) в названии которой(-ых) присутствует восклицательный знак, в этих(-ой) папке (-ах) естественно находятся файлы в названиях которых присуствует восклицательный знак. Хотелось как-нибудь разрулить эту тему т.е. После работы скрипта восклицательный знак должен отсуствовать как в названиях папок также и в названиях файлов которые храняться в этих папках, кстати до работы скрипта в папках храняться файлы в названии которых есть восклицательный знак и файлы название которых неподпорченно этим знаком (!).
Не знаю как подступится к этому скрипту, однако знаю что восклицательный знак можно экранировать, толи так ^!^ , толи так ^! . Подскажите в каком направлении двигать мысль, или скрипт подкинте, буду очень благодарен!!!
El Sanchez
05-08-2010, 13:48
Oleg48,
@Echo Off
Set Source=C:\Source!
Set RenameSource=%Source:!=%
For /F "Tokens=*" %%A In ("%RenameSource%") Do Ren "%Source%" "%%~nA" 2>nul&&^
For /F "Tokens=*" %%A In ('Dir /B /A-D "%RenameSource%"') Do Call :Func "%%A"
GoTo :EOF
:Func
Set FileName=%~1
Set FileName=%FileName:!=%
Ren "%RenameSource%\%~1" "%FileName%" 2>nul
El Sanchez, спасибо за такое быстрое решение, к этому принципу я тоже подгребал - Set RenameSource=%Source:!=% Остальные строки мне очень интересны, есть куда рости. Только некоторые вещи недопонял : %%~nA и вот эти выводы 2>nul&&^ и 2>nul . Если не влом подскажите простым языком, пожалуйста непеняйте на help. А так полный респект и уважуха за ответ ;)
p.s. Я заметил что Вы любите использовать в своих скриптах For /F , надо будет тоже попробывать.
Oleg48,
Только некоторые вещи недопонял : %%~nA и вот эти выводы 2>nul&&^ и 2>nul »
%%~nA - синтаксическая конструкция, позволяет из переменной %%А (представляющей собой имя файла с полным путем к нему) выделить только само имя, без расширения. Все конструкция можно посмотреть cmd>For /?
2>nul - "2" дескриптор ошибки отработки команды, в данном случае перенапрявляется в nul, т.е. в никуда
&& - символ условной обработки, разрешает запуск команды, стоящую за собой, только если команда, стоящая перед ним была выполнена успешно (противоположность ||)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.