如何批量rar带有Unicode名称的文件
我编写了一个小批处理文件来 rar 文件夹内所有子文件夹中的所有内容。除了文件名应该是 ASCII 之外,它工作正常。下面是工作的小代码:
@REM ------- BEGIN rarthem.bat ----------------
@setlocal
@echo off
echo --------------------------------------------------
echo Starting to rar files
echo --------------------------------------------------
echo.
echo.
echo.
set path="C:\Program Files\WinRAR\";%path%
for /D /r %%G in ("*") do (
echo Storing files in %%G
echo --------------------------------------------------
cd %%G
for %%I in (*.*) do (
rar a -x*.rar -x*.zip -m0 -id[c] "%%~nI.rar" "%%I"
echo Done archiving %%~nI%%~xI
)
echo --------------------------------------------------
echo Done archiving %%~nG
echo --------------------------------------------------
echo.
echo.
cd ..
)
echo Finished!
pause
REM ------- END rarthem.bat ------------------
我认为当文件名解析为 WinRAR 时会出现问题,因为 WinRAR 归档具有 Unicode 名称的文件没有问题。
编辑:将文件名解析为 WinRAR 时,文件名会被修改,因此当 WinRAR 尝试查找该名称下的文件时,它找不到它。例如,文件:text.pdf 在解析时将变为 text.pdf。
一个小问题:我没有尝试过使用 7zip,使用 7zip 实现同样的事情会更容易吗?
非常感谢您的帮助。
I wrote a small batch file to rar all contents in all subfolders within a folder. It works fine except for that the file names should be in ASCII. Below is the working small code:
@REM ------- BEGIN rarthem.bat ----------------
@setlocal
@echo off
echo --------------------------------------------------
echo Starting to rar files
echo --------------------------------------------------
echo.
echo.
echo.
set path="C:\Program Files\WinRAR\";%path%
for /D /r %%G in ("*") do (
echo Storing files in %%G
echo --------------------------------------------------
cd %%G
for %%I in (*.*) do (
rar a -x*.rar -x*.zip -m0 -id[c] "%%~nI.rar" "%%I"
echo Done archiving %%~nI%%~xI
)
echo --------------------------------------------------
echo Done archiving %%~nG
echo --------------------------------------------------
echo.
echo.
cd ..
)
echo Finished!
pause
REM ------- END rarthem.bat ------------------
I think the problem happens when the file name is parsed to WinRAR as WinRAR has no problem archiving files with Unicode names.
Edit: When parsing the file name to WinRAR, the file name gets modified so when WinRAR tries to look for the file under that name, it can't find it. For example a file: téxt.pdf will become text.pdf when parsed.
A small side question: I've not tried using 7zip, would it be easier to achieve the same thing with 7zip?
Many thanks for help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
RAR.exe 以 OEM 字符集(即不是 unicode)处理其命令行。我知道向其传递 unicode 名称的唯一方法是通过列表文件,同时还使用参数指定列表文件是 unicode。但是,这只适用于存档内的文件(编辑:或要添加到存档中的文件)。对于存档名称本身,我不知道解决方案,除非...
如果您使用 WinRAR.exe 而不是 RAR.exe,那么您可以在命令行上传递 unicode 文件名,并且它们可以正常工作。您将看到一个 GUI 进度窗口,但除此之外(这对您可能重要也可能不重要)WinRAR.exe 适合从批处理脚本运行。
我不知道批处理脚本本身是否可以处理 unicode,但如果这是唯一剩下的问题,我会改用 VBScript 或 JScript 而不是批处理文件。 (无论如何,这都是值得做的,IMO。我不是 VBScript 和 JScript 的忠实粉丝,但至少它们没有像批处理那样完全疯狂、神秘的语义和限制。:))
顺便说一句,如果你确实使用WinRAR.exe 您可能想要获取最新的 WinRAR 4(当前为 beta 2),因为它包含指定工作目录的功能,而以前只能通过 rar.exe 实现。如果您需要从只读目录添加文件,这可能是必不可少的。
如果您想了解我提到的列表文件,请检查 RAR.exe 文本文件文档或 WinRAR.exe 内置在线帮助以获取所有详细信息。
希望有帮助!
RAR.exe processes its command-line in the OEM character set (i.e. not unicode). The only way I know of to pass a unicode name to it is via a list file, when also using the argument to specify that the list file is unicode. However, that only works for files inside the archive (EDIT: or files you want to add to the archive). For the archive name itself I don't know of a solution except...
If you use WinRAR.exe instead of RAR.exe then you can pass unicode filenames on the command-line and they work fine. You will see a GUI progress window but other than that (which may or may not matter to you) WinRAR.exe is suitable for running from batch scripts.
Whether a batch script itself can cope with unicode I do not know, but if that is the only problem remaining I would switch to using VBScript or JScript instead of a batch file. (Which is worth doing anyway, IMO. I'm not a big fan of VBScript and JScript but at least they don't have completely insane, arcane semantics and limitations like batch does. :))
By the way, if you do use WinRAR.exe you might want to get the recent WinRAR 4 (beta 2 currently) as it includes the ability to specify the working directory, previously only possible with rar.exe. That can be essential if you need to add files from read-only directories.
If you want to learn about the list files I mentioned, check the RAR.exe text-file document or the WinRAR.exe built-in online help for all the details.
Hope that helps!