Есть ли что-то, чтобы удвоить вывод символа%? - PullRequest
0 голосов
/ 15 сентября 2010

Есть ли в файле BATCH что-то, что удвоило бы символ%?

INPUT-файл test.txt содержит следующее

Hello World

The filename is : filename with spaces and 50% percentages signs.txt
The %~nf removes extenstions
Is there something to double a % charactor?
As I would like 50% to be outputed as 50%% 
because the output of this batch is to create input for another batch.

Пакетный файл.

@echo off
setlocal EnableDelayedExpansion

echo. > test2.txt

for /f "tokens=*" %%a in ('type test.txt') do (
    if "%%a"=="Update=Yes" (
        @echo Update=No >> test2.txt
    ) else if "%%a"=="Update=No" (
        @echo Update=Yes >> test2.txt
    ) else if "%%a"=="" (
        rem Questions TWO
        rem print a blank line doesn't work
        @echo. >> test2.txt
    ) else (
        set tmpvar=%%a
        set str=!tmpvar:%%=%%%%!
        echo !str!  >> test2.txt
    )
)

start test2.txt

Вывод test2.txt (Примечание: пустая строка в Hello World)

Hello World  
The filename is : filename with spaces and 50%% percentages signs.txt  
The %%~nf removes extenstions  
Is there something to double a %% charactor?  
As I would like 50%% to be outputed as 50%%%%   
because the output of this batch is to create input for another batch.  

Проблема вторая: как проверить, является ли %% a пустой строкой?

Это работает, но потребует 400 строк; Есть ли способ сделать это с помощью For LOOP?

@echo off   

set STR2=ON%%E

echo This is STR2 %STR2%

IF "%STR2:~0,1%"=="%%" (set STR3=%STR3%%%%%) else  set STR3=%STR3%%STR2:~0,1%

IF "%STR2:~1,1%"=="%%" (set STR3=%STR3%%%%%) else  set STR3=%STR3%%STR2:~1,1%

IF "%STR2:~2,1%"=="%%" (set STR3=%STR3%%%%%) else  set STR3=%STR3%%STR2:~2,1%

IF "%STR2:~3,1%"=="%%" (set STR3=%STR3%%%%%) else  set STR3=%STR3%%STR2:~3,1%

echo This is STR3 %STR3%

pause

1 Ответ

3 голосов
/ 17 сентября 2010

Чтобы ответить на ваши вопросы:

1) В базовом скрипте это, пожалуй, самый простой способ замены строки.

2) "/ n" не будет соответствовать пустой строке. Пустая строка будет просто "".

3) "tokens = *" помещает всю строку в переменную %% a, поэтому echo %%a - лучший способ просто отобразить всю строку.

4) Вам понадобится использовать другую переменную, чтобы удвоить% следующим образом:

) else (
    set tmpvar=%%a
    set str=!tmpvar:%%=%%%%!
    echo !str!
)
...