Une autre astuce possible est la pré-création d’un fichier ou d’un dossier cible. Alors xcopy
ne demanderais pas, car il serait déjà au courant. Je ne dirais pas que cette solution est meilleure que celles mentionnées ci-dessus, elle est simplement différente et par conséquent, je souhaite qu'elle soit ici aussi.
Ma tâche simple consistait à copier un certain nombre de fichiers d'un dossier réseau dans un dossier d'accumulation local.
- AAAAA \ Disk1.zip => AAAAA.zip
- BBBBB \ Disk1.zip => BBBBB.zip
- etc
La commande originale (une ligne d’un fichier de script .cmd légèrement plus long) était
for /d /r %SRC% %%1 in (*.*) do xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip
Cela génère toutefois beaucoup de questions de répertoire (F) ile ou (D) lors d’une première utilisation avec de nouveaux fichiers (non encore remplies). Surtout si je renseigne un nouveau dossier cible vide.
Puis le echo F
et Asterisk Hack répondent - ils fonctionnent bien aussi.
for /d /r %SRC% %%1 in (*.*) do echo f | xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip
for /d /r %SRC% %%1 in (*.*) do xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip*
Maintenant, encore une solution potentielle serait explicitement de CRÉER le dossier cible du fichier juste avant d’exécuter la xcopy
commande.
Pour fichier, ce serait, par exemple:
echo. > C:\Temp\TargetPlace
xcopy Source C:\Temp\TargetPlace
Malheureusement, Windows par défaut n’a pas de touch
commande, ce qui est très utile pour créer un fichier factice de 0 octet.
Pour le dossier, ce serait, par exemple:
mkdir C:\Temp\TargetPlace
xcopy Source C:\Temp\TargetPlace
Certes, il faut deux commandes - deux lignes - en script shell CMD. Vous ne pouvez pas mettre plusieurs commandes dans CMD boucle facilement, mais là , vous pouvez tuyau les commandes ensemble ( à condition que xcopy
ne lirait pas réellement une entrée de l' utilisateur lors de son émission la commande spécifique, ce qui pourrait changer par exemple dans les futures versions de fenêtres, mais peu probable).
Pour les dossiers:
for /d /r %SRC% %%1 in (*.*) do md %~dp0%%~nx1.zip | xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip
Pour les fichiers:
for /d /r %SRC% %%1 in (*.*) do echo. >%~dp0%%~nx1.zip | xcopy /k /f /y %%1\Disk1.zip %~dp0%%~nx1.zip
Cette dernière commande a DEUX redirections de sortie entre - echo.
> ... | xcopy
. Mais au moins dans les .cmd
fichiers de Windows 8.1 cela fonctionne.
/-i
pour supprimer cette question stupide.