2010-12-04 29 views
1

J'ai écrit un petit fichier batch pour récupérer tous les contenus de tous les sous-dossiers d'un dossier. Cela fonctionne bien sauf que les noms de fichiers doivent être en ASCII. Ci-dessous le petit code de travail:Comment puis-je exclure un fichier avec un nom Unicode dans le lot

@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 ------------------ 

Je pense que le problème se produit lorsque le nom du fichier est analysé à WinRAR comme WinRAR n'a pas l'archivage de fichiers problème avec les noms Unicode.

Edit: Lorsque l'analyse syntaxique du nom du fichier à WinRAR, le nom de fichier est modifié de sorte quand WinRAR essaie de chercher le fichier sous ce nom, il ne peut pas le trouver. Par exemple, un fichier: téxt.pdf deviendra text.pdf lorsqu'il sera analysé.

Une petite question de côté: Je ne l'ai pas essayé d'utiliser 7zip, serait-il plus facile d'obtenir la même chose avec 7zip?

Un grand merci pour votre aide.

+0

Quel genre de changement voyez-vous? Vous dites que les noms de fichiers doivent être en ASCII, mais vous dites qu'ils sont Unicode. Voulez-vous qu'ils soient convertis d'une manière ou d'une autre? Un test utilisant 7zip préserve les caractères Unicode. Je n'ai pas rar. –

+0

Désolé j'étais vague. J'ai ajouté plus d'informations. Je voudrais juste pouvoir rar le fichier sans avoir à changer son nom. Probablement je vais essayer 7zip. –

+0

7-zip le fera si vous voulez créer une archive .7z. RAR.exe et WinRAR.exe sont les seules choses qui vont créer une archive RAR réelle. (7-Zip peut décompresser RAR mais ne pas le créer.) Les personnes qui fabriquent RAR n'autoriseront toujours une licence de décompactage à personne après toutes ces années, ce qui est assez frustrant si vous voulez utiliser (ou créer) un meilleur outil pour créer RARs.) –

Répondre

0

traite rar.exe sa ligne de commande dans le jeu de caractères OEM (à savoir non unicode). Le seul moyen que je connaisse pour lui passer un nom unicode est via un fichier de liste, quand on utilise aussi l'argument pour spécifier que le fichier de liste est unicode. Cependant, cela ne fonctionne que pour les fichiers à l'intérieur l'archive (EDIT: ou les fichiers que vous souhaitez ajouter à l'archive). Pour le nom d'archive lui-même, je ne connais pas de solution sauf ...

Si vous utilisez WinRAR.exe au lieu de RAR.exe, vous pouvez passer des noms de fichiers unicode sur la ligne de commande et ils fonctionnent correctement. Vous verrez une fenêtre de progression de l'interface graphique, mais autre que celle-ci (qui peut ou peut ne pas vous intéresser) WinRAR.exe est adapté pour exécuter à partir de scripts batch. Je ne sais pas si un script batch peut supporter unicode, mais si c'est le seul problème restant je passerais à VBScript ou JScript au lieu d'un fichier batch. (Ce qui vaut la peine d'être fait, IMO, je ne suis pas un grand fan de VBScript et JScript mais au moins ils n'ont pas complètement sémantique, sémantique arcanique et limitations comme le fait batch.))

Par ailleurs, Si vous utilisez WinRAR.exe, vous pouvez obtenir le récent WinRAR 4 (beta 2 actuellement) car il inclut la possibilité de spécifier le répertoire de travail, auparavant seulement possible avec rar.exe. Cela peut être essentiel si vous devez ajouter des fichiers à partir de répertoires en lecture seule.

Si vous voulez en savoir plus sur les fichiers de la liste je l'ai mentionné, consultez le document de fichier texte rar.exe ou WinRAR.exe intégré aide en ligne pour tous les détails.

Espérons que ça aide!

+0

Merci pour vos conseils! Je vais regarder dedans. –