2013-09-07 3 views
0

Я хочу редактировать файлы в каталоге, заканчивающемся расширением .xml. Я написал код для редактирования одного файла:Пакетный файл для редактирования нескольких файлов в каталоге

@echo off 
echo Removing... 
for /f "skip=17 delims=*" %%a in (C:\xml\file1.xml) do (
echo %%a >>C:\newfile.xml 
) >nul 
echo Lines removed, rebuilding file... 
xcopy C:\newfile.xml C:\file.xml /y >nul 
echo File rebuilt, removing temporary files 
del C:\newfile.xml /f /q >nul 
msg * Done! 
exit >nul 

Я хотел бы отредактировать все файлы в каталоге.

ответ

0

Просто делать то, что вы просили:

@echo off 
for %%F in ("C:\xml\*.xml") do (
    echo Processing %%F 
    echo Removing... 
    for /f "skip=17 delims=*" %%a in ("%%F") do (
    echo %%a >>C:\newfile.xml 
) >nul 
    echo Lines removed, rebuilding file... 
    xcopy C:\newfile.xml "%%F" /y >nul 
    echo File rebuilt, removing temporary files 
    del C:\newfile.xml /f /q >nul 
    msg * Done! 
    echo(
) 
exit >nul 

Но я считаю, что вы хотели "delims=" (без разделителей) или "tokens=*" (все маркеры), не "delims=*" (перерыв на *).

Кроме того, код может быть значительно упрощена и сделать гораздо более эффективным:

@echo off 
for %%F in ("C:\xml\*.xml") do (
    >"%%F.new" (for /f "skip=17 delims=" %%a in ("%%F") do echo %%a) 
    move /y "%%F.new" "%%F" >nul 
    echo %%F 
) 
msg * Done! 
exit /b 

Даже быстрее, использовать больше до тех пор, пока вы не должны сохранить TAB символов, а также файлы не являются слишком большой (в какой-то момент перенаправляется MORE зависает, ожидая нажатия клавиши при обработке больших файлов).

@echo off 
for %%F in ("C:\xml\*.xml") do (
    more +17 "%%F" >"%%F.new" 
    move /y "%%F.new" "%%F" >nul 
    echo %%F 
) 
msg * Done! 
exit /b 
Смежные вопросы