我使用此批处理指令生成不包含 .zip 文件的每个子目录的列表:
@echo off
for /d /r %%f in (*) do (
if not exist %%f\*.zip (
echo %%f >>G:\backup\folders.txt
)
)
问题是这会生成一个列表,其中重音会破坏返回的结果,例如
G:\backup\! d‚j… upload‚\
代替
G:\backup\! déjà uploadé‚\
我读到批处理默认只能处理 Unicode 字符。有一些技巧可以让它吃掉带有重音的路径,但我发现没有技巧可以让它输出(回显)带有重音的结果。
你知道该怎么做吗?我将不胜感激!
标准代码页是代码页 850在西欧国家的 Windows 上的非 Unicode 控制台窗口中,属于 OEM 代码页组。
标准代码页是Windows-1252在西欧国家的非 Unicode GUI 窗口中,Windows 上属于 ANSI 代码页组,尽管该代码页不是一个ANSI标准。但Windows-1252类似于标准化代码页ISO-8859-1代码值 128 (0x80) 到 159 (0x9F) 的字符除外。
由于大多数文件夹和文件名都是在 Windows GUI 应用程序中创建的,因此代码值大于 127 的字符通常使用 Windows-1252。
例如文件夹名称!似曾相识上传‚以字节为单位(十六进制)
21 20 64 E9 6A E0 20 75 70 6C 6F 61 64 E9 82
这 15 个字节使用代码页 1252 的字体显示为!似曾相识上传‚但使用代码页 850 作为! d‚j…上传‚'
该批处理文件的解决方案是使用命令chcp(更改代码页)在输出文件夹名称之前echo并将它们重定向到稍后在 Windows GUI 编辑器中打开的文本文件中。
@echo off
chcp 1252>nul
for /d /r %%f in (*) do (
if not exist %%f\*.zip (
echo %%f>>G:\backup\folders.txt
)
)
注意:没有剩余空间>nul
and >>G:\backup\folders.txt
。有关解释,请参阅答案当从java运行批处理文件时,1随机出现在>>之前.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)