Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как убрать из названий файлов и папок восклицательный знак? (http://forum.oszone.net/showthread.php?t=182168)

Oleg48 05-08-2010 02:08 1467067

Как убрать из названий файлов и папок восклицательный знак?
 
Проблема такая, есть папка(-и) в названии которой(-ых) присутствует восклицательный знак, в этих(-ой) папке (-ах) естественно находятся файлы в названиях которых присуствует восклицательный знак. Хотелось как-нибудь разрулить эту тему т.е. После работы скрипта восклицательный знак должен отсуствовать как в названиях папок также и в названиях файлов которые храняться в этих папках, кстати до работы скрипта в папках храняться файлы в названии которых есть восклицательный знак и файлы название которых неподпорченно этим знаком (!).
Не знаю как подступится к этому скрипту, однако знаю что восклицательный знак можно экранировать, толи так ^!^ , толи так ^! . Подскажите в каком направлении двигать мысль, или скрипт подкинте, буду очень благодарен!!!

El Sanchez 05-08-2010 13:48 1467390

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


Oleg48 05-08-2010 14:32 1467429

El Sanchez, спасибо за такое быстрое решение, к этому принципу я тоже подгребал -
Код:

Set RenameSource=%Source:!=%
Остальные строки мне очень интересны, есть куда рости. Только некоторые вещи недопонял : %%~nA и вот эти выводы 2>nul&&^ и 2>nul . Если не влом подскажите простым языком, пожалуйста непеняйте на help. А так полный респект и уважуха за ответ ;)

p.s. Я заметил что Вы любите использовать в своих скриптах For /F , надо будет тоже попробывать.

deepred 05-08-2010 14:45 1467443

Oleg48,

Цитата:

Цитата Oleg48
Только некоторые вещи недопонял : %%~nA и вот эти выводы 2>nul&&^ и 2>nul »

%%~nA - синтаксическая конструкция, позволяет из переменной %%А (представляющей собой имя файла с полным путем к нему) выделить только само имя, без расширения. Все конструкция можно посмотреть cmd>For /?

2>nul - "2" дескриптор ошибки отработки команды, в данном случае перенапрявляется в nul, т.е. в никуда

&& - символ условной обработки, разрешает запуск команды, стоящую за собой, только если команда, стоящая перед ним была выполнена успешно (противоположность ||)


Время: 23:32.

Время: 23:32.
© OSzone.net 2001-