我想我在Window的批处理脚本中遇到了一个错误.
我无法设置扩展if语句中的变量.
这是我的脚本的一个孤立的部分:
@echo off
set success=1
set Version=12345
set Target=Client
set Type=456
set dir=
set zip=
if "%Version%"=="" set success=0
if "%Type%"=="" set success=0
if 1==1 set test=42
if %success%==1 (
set test2=57005
if "%Target%"=="Client" (
set dir=ModName v%Version%
set zip=ModName v%Version% %Type%.zip
echo Version: %Version%
echo Type: %Type%
echo.
echo Target: %Target%
echo dir: %dir%
echo zip: %zip%
echo.
echo test: %test%
echo test2: %test2%
)
) else (
echo Not successful.
)
Run Code Online (Sandbox Code Playgroud)
这是一个全新的cmd实例的输出:
C:\Users\RandomClown\Desktop>test.bat
Version: 12345
Type: …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用批处理脚本在文本文件中查找和替换字符串.我遇到了这个几乎解决了我的问题的答案,但输出文件中没有保留空行.我也尝试了这个答案,但行开头是行号[] ...... [17]
任何有助于扩展此答案以保留输出文件中的空行的帮助将不胜感激.谢谢
setlocal enableextensions disabledelayedexpansion
set "search=<Tool>"
set "replace=XYZ"
set "textFile=C:\abc.txt"
for /f "delims=" %%i in ('type "%textFile%" ^| find /v /n "" ^& break ^> "%textFile%"') do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
>>"%textFile%" echo(!line!
endlocal
)
Run Code Online (Sandbox Code Playgroud)