У меня есть следующий пакетный файл, чтобы найти и удалить строку в текстовом файле.Текстовые файлы будут иметь следующий формат:
079754,Billing & Business Adv..,E:\MyDirectory\079754_35931_Billing & Business Adv...pdf,Combined PDF
Я просто хочу удалить «E: \ MyDirectory \» из файла и затем переместить файл в подкаталог.Мой пакетный файл работает как положено, за исключением случая, когда в файле есть амперсанд (такой как приведенный выше) ..
Вместо моего файла результатов, содержащего:
079754,Billing & Business Adv..,Billing & Business Adv...pdf,Combined PDF
Itвместо этого содержит
079754,Billing
Я немного новичок в написании командных файлов и знаю, что амперсанд так или иначе влияет на токенизацию.Любая помощь будет принята с благодарностью!
Пакетный файл:
@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