Batch file Batch file可编辑目录中的多个文件
我想编辑以.xml扩展名结尾的目录中的文件。我编写了编辑一个文件的代码:Batch file Batch file可编辑目录中的多个文件,batch-file,Batch File,我想编辑以.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
@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
我想编辑目录中的所有文件。按照您的要求:
@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
甚至更快,只要您不需要保留制表符,并且文件不太大(在某些情况下,在处理大文件时重定向了更多等待按键的挂起),就可以使用更多
按照你的要求去做:
@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
甚至更快,只要您不需要保留制表符,并且文件不太大(在某些情况下,在处理大文件时重定向了更多等待按键的挂起),就可以使用更多