Компьютерный форум 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=301316)

Cosmogor 17-06-2015 21:15 2519621

Экранирование восклицательного знака
 
Всем привет :)
Вот застрял на экранирование спецсимвола "!"
Ну ни как не могу справиться с ним :(

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

Код:


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 2519629

А что, собственно, нужно? Удалить из названия файла символ "!"?
Код:

@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 2519641

Код:

@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 2519645

Цитата:

Цитата greg zakharov
А что, собственно, нужно? Удалить из названия файла символ "!"? »

Ага , точно, ни как не могу удалить восклицательный знак из имени файлов.

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

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

vivexce 02-11-2023 14:34 3019402

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


Время: 21:35.

Время: 21:35.
© OSzone.net 2001-