nts*_*sue 2 windows batch-file
我有以下批处理文件来查找和删除文本文件中的字符串.文本文件将采用以下格式:
079754,Billing & Business Adv..,E:\MyDirectory\079754_35931_Billing & Business Adv...pdf,Combined PDF
Run Code Online (Sandbox Code Playgroud)
我只想从文件中删除"E:\ MyDirectory \",然后将文件移动到子目录.我的批处理文件按预期工作,除了文件中有一个&符号(例如上面的一个)之外.
而不是我的结果文件包含:
079754,Billing & Business Adv..,Billing & Business Adv...pdf,Combined PDF
Run Code Online (Sandbox Code Playgroud)
它包含,
079754,Billing
Run Code Online (Sandbox Code Playgroud)
我对编写批处理文件有些新意,我知道&符号会以某种方式影响标记化.任何帮助将不胜感激!
批处理文件:
@echo off
cd C:\Temp\broker
for %%f in (*.dat) do (
if exist newfile.txt del newfile.txt
FOR /F "tokens=* delims=" %%a in (%%f) do @call :Change "%%a"
del %%f
rename newfile.txt %%f
move %%f "import\%%f"
)
exit /b
pause
:Change
set Text=%~1
set Text=%Text:E:\MyDirectory\=%
FOR /F "tokens=3 delims=," %%d in ("%Text%") do @set File=%%d
(echo %Text%)>> newfile.txt
move "%File%" "import\%File%"
exit /b
Run Code Online (Sandbox Code Playgroud)
您应该引用命令,例如set,以逃避&和其他特殊字符.
并使用延迟扩展,与延迟扩展一样,忽略特殊字符.
并且在执行块之前评估百分比扩展,因此您的for循环无法按预期工作.
setlocal EnableDelayedExpansion
...
:Change
set "Text=%~1"
set "Text=!Text:E:\MyDirectory\=!"
FOR /F "tokens=3 delims=," %%d in ("!Text!") do @set File=%%d
(echo !Text!)>> newfile.txt
move "!File!" "import\!File!"
exit /b
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2850 次 |
| 最近记录: |