web-dev-qa-db-fra.com

Copie de fichiers par lots à l'aide de% 1 pour le glisser-déposer

J'ai essayé de créer un fichier de commandes par glisser-déposer.

J'ai le problème qu'un fichier existe mais que le fichier batch n'a pas pu le trouver ...

Je veux copier .png fichiers (comme pict_2013020808172137243.png) dans un autre dossier et renommez-le.

Dans le chemin se trouvent des symboles comme _ et les espaces, aussi je ne sais pas comment faire du multi-glisser-déposer pour faire la même fonction (renommer et ajouter à .Zip).

J'ai essayé mais sans résultat :(

@ECHO OFF
ECHO %1
COPY "%1" "%CD%\test\" /Y /S 
REN "%CD%\mob\*.png" "%CD%\test\test.png"
7za u -tzip "%appdata%\.virto\pack.Zip" "test" -r
20
John Johnson

Le glisser-déposer est mal implémenté pour les fichiers batch.
Les noms sont cités, si un espace est présent, mais pas si un caractère spécial est trouvé, comme &,;^

Pour les espaces uniquement dans vos noms de fichiers, vous devez modifier légèrement votre code.

@ECHO OFF
ECHO "%~1"
COPY "%~1" "%CD%\test\" /Y /S 
REN "%CD%\mob\*.png" "%CD%\test\test.png"
7za u -tzip "%appdata%\.virto\pack.Zip" "test" -r

%~1 s'étend toujours à une version sans guillemets, donc peut toujours les citer de manière sûre.

"c:\Docs and sets" -> %~1 -> c:\Docs and sets -> "%~1" -> "c:\Docs and sets"
c:\Programs -> %~1 -> c:\Programs -> "%~1" -> "c:\Programs"

Pour plus de détails, lisez Glissez et déposez un fichier batch pour plusieurs fichiers?

41
jeb