Удаление символов из переменной

Я пытаюсь убрать пробелы и запятые из %%~ni. Мне удалось это сделать, поместив это в мою новую переменную !url!. Это нормально, но кто-нибудь знает, почему я не могу использовать его здесь: set "line=!line:REPLACE=!url!!"?

@echo off
setlocal enableextensions enabledelayedexpansion
for /R %%i in (*.csv) do (
ren "%%~i" temp.tmp
(for /F "usebackq tokens=*" %%f in ("%%~dpitemp.tmp") do (
        set "line=%%f"
        echo %%~ni

        set url=%%~ni
        set url=!url: =-!
        set url=!url:,=!
        echo !url!
        set "line=!line:REPLACE=!url!!"


        echo(!line!
)) > "%%~i"
del "%%~dpitemp.tmp"
)
set "line=!line:REPLACE=!url!!" не может работать, но вы можете сделать for /F "delims=" %%e in ("!url!") do set "line=!line:REPLACE=%%e!" ...
aschipfl 10.08.2018 15:09
set url=!url:(=!set url=!url:)=! Быстрый вопрос, знаете ли вы, почему здесь не работают скобки?
Siwap 10.08.2018 15:27

Используйте синтаксис в кавычках, например set "url=!url:(=!" и set "url=!url:)=!", чтобы защитить такие специальные символы от распознавания парсером ...

aschipfl 10.08.2018 15:30

Отлично, большое спасибо за вашу помощь (:

Siwap 10.08.2018 16:19

Вы также можете использовать call set "line=%%line:REPLACE=!url!%%". Предлагаю прочитать этот ответ. Хотя тема иная, проблема и способ ее решения те же ...

Aacini 10.08.2018 16:50
0
5
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ответьте всем, у кого есть эта проблема:

@echo off
setlocal enableextensions enabledelayedexpansion
for /R %%i in (*.csv) do (
ren "%%~i" temp.tmp
(for /F "usebackq tokens=*" %%f in ("%%~dpitemp.tmp") do (
        set "line=%%f"
        set url=%%~ni
        set "url=!url: =-!"
        set "url=!url:,=!"
        set "url=!url:(=!"
        set "url=!url:)=!"
        for /F "delims=" %%e in ("!url!") do set "line=!line:REPLACE=%%e!"
        echo(!line!
)) > "%%~i"
del "%%~dpitemp.tmp"
)

Другие вопросы по теме