我想删除文件列表中的文件。 我基本上是试图做到这一点:CMD /批处理 - 删除UTF-8文件中的字符文件名(例如日文,中文字符)
del 二月.mp3 /f
它似乎并没有因为UTF-8字符的工作。我搜索了很多,并没有找到解决这个问题的方法。 任何人都有这个解决方案?
我想从文件夹中删除10,000多个文件,使用我拥有这些文件的文本文件列表。这些文件的名称中都有日文字符。
谢谢:)
我想删除文件列表中的文件。 我基本上是试图做到这一点:CMD /批处理 - 删除UTF-8文件中的字符文件名(例如日文,中文字符)
del 二月.mp3 /f
它似乎并没有因为UTF-8字符的工作。我搜索了很多,并没有找到解决这个问题的方法。 任何人都有这个解决方案?
我想从文件夹中删除10,000多个文件,使用我拥有这些文件的文本文件列表。这些文件的名称中都有日文字符。
谢谢:)
继批处理脚本和示例文本文件显示,CMD
/批能够从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
知道,但不是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>
'rm'不是Windows批处理文件中的标准命令,是否有一些替代环境在您的问题中未报告? – Compo
确保编辑器在创建BAT文件时使用UTF8编码。或者使用文件的简称,你可以用'dir/x'来获得 –
我的意思是写del而不是rm。 我确定我的bat文件是UTF-8编码。 我想从列表中删除10,000多个文件,并且这些文件中有日文字符,所以我必须使用某种脚本来执行此操作。 – Vladz0r