PDA

Показать полную графическую версию : [решено] Экранирование восклицательного знака


Cosmogor
17-06-2015, 21:15
Всем привет :)
Вот застрял на экранирование спецсимвола "!"
Ну ни как не могу справиться с ним :(

Задача:
Имею папку с файлами в именах которых встречается восклицательный знак.
Нужно этот восклицательный знак удалить из имени файла.



chcp 1251>nul
setlocal enabledelayedexpansion

for /f "tokens=*" %%a in ('dir "%CD%\*.*" /b /l') do (

set name=%%~nxa

set name=!name:^(=!
set name=!name:^)=!
set name=!name:^%%=!

set name=!name:^!=! Вот здесь самая настоящая проблема


ren "%%a" "!name!"

)


И ни чем ведь не экранируется этот знак.
Все файлы которые имеют "!" игнорируются и не переименовываются, прямо беда.

greg zakharov
17-06-2015, 21:37
А что, собственно, нужно? Удалить из названия файла символ "!"? @echo off
for /f "tokens=1,2 delims=!" %%i in ('dir *!* /a-d /b /l') do (
ren "%%i!%%j" "%%i%%j"
)
exit /b

Georgio
17-06-2015, 22:08
@echo off

for /f "tokens=*" %%a in ('2^>nul dir/a-d/b/l') do (
set name=%%a
call set "name=%%name:(=%%"
call set "name=%%name:)=%%"
call set "name=%%name:!=%%"
cmd/v/c ren "%%a" "!name:%%=!"
)

exit/b

Cosmogor
17-06-2015, 22:15
А что, собственно, нужно? Удалить из названия файла символ "!"? »
Ага , точно, ни как не могу удалить восклицательный знак из имени файлов.

Georgio, твой код хорошо отработал :) спс.

Собственно проблема как такова решена, всем спасибо!

vivexce
02-11-2023, 14:34
В папке откуда запускаю скрипт, нужно у всех файлов с расширением mp3 удалить из названий восклицательный знаки! Код выше не сработал(




© OSzone.net 2001-2012