首页 > 解决方案 > “for /f .... do”在第一行不起作用

问题描述

我使用以下批处理文件删除具有完整路径的文件。输出文件的第一行是错误消息“文件名、目录名或卷标语法不正确”。C:\DELETE-ALL-FULLPATH.txt 中的所有文件都被删除,除了第一个文件。我想知道为什么第一行会导致问题。

@REM This script deletes files which include full path.

@if exist C:\DELETE-all-fullpath-output.txt DEL /Q c:\DELETE-all-fullpath-output.txt
@for /f "tokens=* eol=@ delims=" %%A in ( C:\DELETE-ALL-FULLPATH.txt) do (
@DEL /Q /A "%%A"
)   >> C:\DELETE-all-fullpath-output.txt 2>&1

CD /D C:\

这些是 C:\DELETE-ALL-FULLPATH.txt 的前两行。除数字不同外,所有行的格式相同。除第一个文件外,所有列出的文件都将被删除。

c:\Users\administrator\documents\IMG_20190229_134600.jpg
c:\Users\administrator\documents\IMG_20191229_134202.jpg
......

在此处输入图像描述

标签: batch-filecmd

解决方案


请试一试。

@echo off
REM This script deletes files which include full path.
del /Q c:\DELETE-all-fullpath-output.txt>nul 2>&1
for /f "usebackq delims=" %%A in ("C:\DELETE-ALL-FULLPATH.txt") do (
    if exist "%%~A" del /Q /A "%%~A"
)>>c:\DELETE-all-fullpath-output.txt 2>&1

编辑

查看您的文件后,它确实是启用了 BOM 的 UTF-8。

在此处输入图像描述

在记事本中打开文件,然后选择另存为。在编码选项卡中,仅选择 UTF-8,无 BOM。


推荐阅读