2012-12-05 5 views
2

J'essaye d'écrire un fichier séquentiel qui est fondamentalement utilisé pour copier des destinations. Maintenant, je veux le faire là où d'autres personnes peuvent l'utiliser sans avoir à entrer et modifier les répertoires et les destinations. Y at-il un moyen pour moi d'écrire le fichier batch à l'endroit où il l'invite, demandant le répertoire que l'utilisateur souhaite copier, et de demander le lecteur que l'utilisateur souhaite copier?Comment autoriser un utilisateur à choisir des répertoires à copier?

C'est ce que j'utilise depuis un moment maintenant.

@echo off 
:: variable 
set backupdir="Destination" 
set backupcmd=xcopy /e /h /f /y /v /c /i /r /g /k /d 
echo. 
echo +++ Backing Up Data +++ 
echo. 
echo. 
%backupcmd% "Directory\*.*" "%backupdir%\Data" 
timeout /t 2 
cls 
echo Backup Complete 
echo. 
echo. 
timeout /t 2 
cls 
echo. 
echo +++ Now taking hidden and system attributes off of folders +++ 
echo. 
echo. 
echo. 
attrib -s -h "Destination\Data" 
echo. 
echo. 
timeout /t 3 

Et est-ce que je peux améliorer cela en utilisant xcopy?

+1

'set/p' s'affichera; http://ss64.com/nt/set.html –

+0

Va-t-il demander à quelle destination ils veulent être copiés? et où ils veulent copier? – JustinD

+0

"Améliorer l'utilisation de xcopy" Quel type d'amélioration recherchez-vous? – jimhark

Répondre

1

Vous pouvez utiliser:

SET /P variable=[promptString] 

De la documentation:

commutateur/P permet de définir la valeur d'une variable à une ligne d'entrée saisie par l'utilisateur. Affiche le promptString spécifié avant de lire la ligne d'entrée. Le promptString peut être vide.

Vous l'utilisez comme:

set /p backupdir=Enter Destination Directory: 

Et:

set /p sourcedir=Enter Source Directory: 

changer ensuite votre commande de copie à:

%backupcmd% "%sourcedir%\*.*" "%backupdir%\Data" 

Et ne pas oublier votre commande attrib (qui aurait déjà dû utiliser %backupdir%):

attrib -s -h "%backupdir%\Data" 

Comme alternative, envisager d'autoriser les arguments de ligne de commande en option:

dobackup Destination BackupDir 

Mis en œuvre avec ces changements:

if "%1" == "" (
    set /p backupdir=Enter Destination Directory: 
) else (
    set backupdir=%~1 
) 

if "%2" == "" (
    set /p sourcedir=Enter Source Directory: 
) else (
    set sourcedir=%~2 
) 

Enfin, l'ajout d'une ligne SETLOCAL après @echo off gardera vos variables nommées hors de l'espace d'environnement global.

Questions connexes