2017-09-30 4 views
0

J'ai le code de lot suivant qui, lorsqu'il est exécuté dans un dossier, vérifie l'extension de fichier, crée le dossier par rapport à l'extension de fichier et déplace le fichier dans le dossier avec l'extension name c'est-à-dire qu'il créera le dossier .gif pour y déplacer tous les gifs et le dossier .jpg pour y placer tous les jpg et ainsi de suite. Je n'ai aucune expertise dans l'écriture d'un fichier de commandes mais tout ce dont j'ai besoin est de changer ce code de manière à ce que tous les fichiers puissent être placés dans les dossiers de manière à ce que tout le fichier image soit placé dans le dossier "Images", tous les fichiers vidéo dans "Vidéos", tous les fichiers de documents (pdf, docs, xls etc.) dans le dossier Docs, tous les fichiers audio doivent être dans le dossier Audio et ainsi de suite ...... Quelqu'un peut-il aider ???Écrire un fichier batch pour déplacer des fichiers encombrés dans des dossiers respectifs

@echo off 
rem For each file in your folder 
for %%a in (".\*") do (
rem check if the file has an extension and if it is not our script 
if "%%~xa" NEQ "" if "%%~dpxa" NEQ "%~dpx0" (
rem check if extension folder exists, if not it is created 
if not exist "%%~xa" mkdir "%%~xa" 
rem Move the file to directory 
move "%%a" "%%~dpa%%~xa\" 
)) 

@compo Les types de fichiers en ce qui concerne les catégories sont les suivantes: -

Docs 
    .docs,docx,xls,pdf 
Video 
    .avi,.mpeg,.mp4 
Audio 
    .mp3,.wma 
Image 
    .jpg,.bmp,.gif 

et ainsi de suite ......

Le nom de la catégorie devrait en fait le nom du dossier.

+0

Pour ce faire, vous devez fournir une liste des types de fichiers avec des catégories comme des paires dans un fichier texte à lire le long côté votre script. Quelque chose dans le genre de 'Documents, .docx' et' Pictures, .psd' etc. chaque entrée sur une ligne différente. _ (séparer chaque paire par une virgule) _. Lorsque vous avez créé votre liste, postez-la ici en tant que [edit] (https://stackoverflow.com/posts/46502116/edit) à votre question et nous allons partir de là. – Compo

Répondre

0

Depuis votre liste est petite, vous pouvez probablement ajouter les informations à votre fichier de script au lieu d'un fichier séparé:

@For /F "Tokens=1*Delims=:" %%A In ('FindStr/B : %0' 
) Do @RoboCopy/MOV . "%%A"%%B>Nul 
@Exit/B 

:Docs: *.doc *.docx *.xls *.pdf 
:Video: *.avi *.mpeg *.mp4 
:Audio: *.mp3 *.wma 
:Image: *.jpg *.bmp *.gif 

Modifier les quatre dernières lignes au besoin, il devrait être explicite de le faire.

Modifier

L'utilisation d'un fichier séparé, FileCats.txt:

Docs: *.doc *.docx *.xls *.pdf 
Video: *.avi *.mpeg *.mp4 
Audio: *.mp3 *.wma 
Image: *.jpg *.bmp *.gif 

... et le fichier batch, Catégoriser.cmd:

@For /F "UseBackQTokens=1*Delims=:" %%A In ("FileCats.txt" 
) Do @RoboCopy/MOV . "%%A"%%B>Nul 

Assurez-vous qu'il ya un espace après le :

+0

Merci beaucoup. De vos mots, je peux comprendre que nous pouvons lire un fichier dans un fichier batch. Est-ce vrai?? Si ce code doit être changé en ce qui concerne la lecture des types de fichiers à partir d'un fichier, comment cela serait-il? – Fundi

+0

Ajout d'une version de fichier distincte en tant que ** Modifier ** – Compo

+0

Sur le réseau StackExchange, lorsqu'un membre reçoit une bonne réponse à sa question, il a la possibilité de [accepter une réponse] (https://stackoverflow.com/help/someone -réponses). Considérant que vous m'avez interrogé davantage après avoir accepté la réponse de quelqu'un d'autre, veuillez considérer si votre réponse initialement marquée était la plus appropriée. Vous pouvez en savoir plus en lisant, [Comment fonctionne l'acceptation d'une réponse?] (Https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work); Je vous remercie. – Compo

0
@echo off 

for %%s in (Images Videos Docs Audio) do md .\%%s 2>nul 

rem For each file in your folder 
for %%a in (".\*") do (
set "moved=" 
rem check if the file has an extension and if it is not our script 
if "%%~xa" NEQ "" if "%%~dpxa" NEQ "%~dpx0" (

    for %%s in (pdf doc xls) do if /i "%%~xa"==".%%s" set "moved=Y"&move "%%a" ".\Docs\" 
    for %%s in (mpg avi) do if /i "%%~xa"==".%%s" set "moved=Y"&move "%%a" ".\Videos\" 
    IF NOT DEFINED moved (

    rem check if extension folder exists, if not it is created 
    if not exist "%%~xa" mkdir "%%~xa" 
    rem Move the file to directory 
    move "%%a" "%%~dpa%%~xa\" 

) 

) 
) 

Note: MD ... 2>nul supprime le message d'erreur lorsque le répertoire ne peut pas être créé (car il existe déjà)

Tout d'abord, créez les répertoires pour les collections.

Pour chaque fichier, réglez d'abord moved-rien (ie. « Clair » si c'est non définie)

vérifier ensuite l'extension d'une manière insensible à la casse (/ i) à une liste de extensions à placer dans la collection. Si vous trouvez une correspondance, définissez moved avec une certaine valeur (comme Y) et déplacez-vous vers la collection appropriée. Après toutes les listes de collection ont été examinés, si moved est toujours rien (c'est-à-dire non défini) puis déplacez le fichier dans le répertoire tel que déterminé par l'extension.

(non testé)

+0

Je l'ai modifié à mes besoins mais je n'ai pas d'expertise dans l'écriture d'un fichier batch, donc pas à la hauteur comme je le veux vraiment. J'ai réussi un peu cependant. Merci pour l'aide. – Fundi