Как я могу Rar файл с именем Unicode в пакете - PullRequest
1 голос
/ 04 декабря 2010

Я написал небольшой пакетный файл, чтобы проанализировать все содержимое всех подпапок в папке.Он работает нормально, за исключением того, что имена файлов должны быть в 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 пытается найти файл под этим именем, он не может его найти.Например, файл: téxt.pdf при синтаксическом анализе станет text.pdf.

Небольшой побочный вопрос: я не пробовал использовать 7zip, проще ли будет добиться того же с 7zip?

Большое спасибо за помощь.

1 Ответ

0 голосов
/ 04 декабря 2010

RAR.exe обрабатывает свою командную строку в наборе символов OEM (т.е. не в кодировке Unicode).Единственный известный мне способ передачи ему имени в Юникоде - через файл списка, когда также используется аргумент, указывающий, что файл списка является Юникодом.Однако это работает только для файлов внутри архива (EDIT: или файлов, которые вы хотите добавить в архив).Что касается самого имени архива, я не знаю решения, кроме ...

Если вы используете WinRAR.exe вместо RAR.exe, вы можете передавать имена файлов в кодировке Unicode в командной строке, и они работают нормально.Вы увидите окно прогресса графического интерфейса, но кроме этого (которое может или не может иметь значение для вас) WinRAR.exe подходит для запуска из пакетных сценариев.

Может ли пакетный сценарий сам справиться с Юникодом, я не знаюзнаю, но если это единственная оставшаяся проблема, я бы переключился на использование VBScript или JScript вместо командного файла.(Что в любом случае стоит сделать, IMO. Я не большой поклонник VBScript и JScript, но, по крайней мере, у них нет абсолютно безумной, загадочной семантики и ограничений, как у batch.:))

ПоКстати, если вы используете WinRAR.exe, вы можете получить последнюю версию WinRAR 4 (в настоящее время бета-версию 2), поскольку она включает в себя возможность указать рабочий каталог, ранее возможный только с rar.exe.Это может быть важно, если вам нужно добавить файлы из каталогов, доступных только для чтения.

Если вы хотите узнать о файлах списка, о которых я упоминал, проверьте документ с текстовым файлом RAR.exe или встроенный WinRAR.exe.в онлайн-справке для всех деталей.

Надеюсь, что поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...