我正在尝试删除文本文件中的文件列表。 我基本上是想这样做:
del 二月.mp3 /f
由于UTF-8字符,它似乎不起作用。我搜索了很多,并没有找到解决这个问题的方法。 有人为此得到了解决方案吗?
我正在尝试使用我拥有这些文件的文本文件列表从文件夹中删除10,000多个文件。每个文件的名称都包含日文字符。
谢谢:)
答案 0 :(得分:1)
以下批处理脚本和示例文本文件显示CMD
/ Batch能够处理来自UCS-2
Unicode subset 的文件名
bat
脚本和 txt
文件列表都保存在UTF-8
character encoding和UTF-8
active console code page下运行,或者(更好)将活动控制台代码页设置为UTF-8
本身,请参阅chcp 65001
命令。( CJK表意文字和中欧重音拉丁字母用于以下示例,两者都在批处理命令中明确使用,并从已保存的此类文件名列表中读取。 )
请注意,bat
脚本(@foo.bar >NUL 2>&1
)中的奇怪的第一行是cmd
UTF-8
知道但 isn& #39; t BOM 意识到(cf byte order mark):

。请注意,txt
文件列表中的第一行是空的,原因相同(cmd
并非 BOM 知道),因此for /F
循环如果BOM不存在则会忽略此空行,否则尝试对此类文件执行某些操作会引发File Not Found
错误(可以使用2>NUL
禁止此消息。)
42030220.bat
脚本:
@foo.bar >NUL 2>&1
@echo OFF
SETLOCAL EnableExtensions DisableDelayedExpansion
chcp 65001
echo next command: for /F "usebackq delims=" %%G …
for /F "usebackq delims=" %%G in ("D:\bat\files\unASCII\42030220.txt") do (
dir /B /S "%%~G"
REM
REM use `del /S "%%~G"` instead of `dir /B /S "%%~G"`
)
echo next command: dir /B /S /A:-D "D:\bat\Unusual Names\CJK\中文(繁體)\*"
dir /B /S /A:-D "D:\bat\Unusual Names\CJK\中文(繁體)\*"
42030220.txt
文件列表(注意前导空行):
二月.mp3
ěščřžýáíé.txt
装备女印度舞娘时装上衣.rtf
<强>输出强>:
d:\bat> d:\bat\SO\42030220.bat
d:\bat> @foo.bar 1>NUL 2>&1
Active code page: 65001
next command: for /F "usebackq delims=" %G …
File Not Found
d:\bat\Unusual Names\CJK\中文(繁體)\二月.mp3
d:\bat\UnASCII Names\ěščřžýáíé.txt
d:\bat\Unusual Names\CJK\中文(繁體)\装备女印度舞娘时装上衣.rtf
next command: dir /B /S /A:-D "D:\bat\Unusual Names\CJK\中文(繁體)\*"
D:\bat\Unusual Names\CJK\中文(繁體)\chinese traditional.txt
D:\bat\Unusual Names\CJK\中文(繁體)\二月.mp3
D:\bat\Unusual Names\CJK\中文(繁體)\装备女印度舞娘时装上衣.rtf
d:\bat>