J'ai un fichier batch qui est sur une clé USB. J'ai besoin de connaître le nom du lecteur dans lequel se trouve le lot.
Par exemple, s'il s'agit de E:\mybatch.bat, E:\doit être identique à F: \, G:\etc .. lorsqu’il est ouvert.
Comment pourrais-je faire cela en script batch. (Les fenêtres)
%CD%
est ce que vous recherchez. Il imprime le répertoire de travail actuel du fichier de commandes ou de la commande l’exécutant. Si votre fichier de commandes se trouve à la racine du lecteur, il imprimera simplement la lettre du lecteur, sinon vous devrez analyser les 2 premiers caractères.
Exemple:
echo %CD%
empreintes
E:\
sur un lecteur flash monté sur E :.
Mise à jour: Comme Andriy l’a dit dans les commentaires, si vous recherchez uniquement les trois premiers caractères du chemin, utilisez ceci au lieu de% CD%:
%CD:~0,3%
Cela se traduira par E:\
, par exemple, n'importe où sur le lecteur.
M $ documentation " Utilisation de paramètres de lot "
Modificateur:% ~ d0
Description: développe% 0 en une lettre de lecteur.
S'il est exécuté à partir d'un fichier .CMD/.BAT, vous pouvez utiliser %~dp0
pour obtenir le répertoire en cours/de travail. Celui-ci est un peu plus sûr car il connaît les chemins UNC et autres. La référence pour la syntaxe de cette variable est disponible ici .
Vous pouvez trouver toutes les lettres de lecteur USB de n'importe quel lecteur avec cela.
@echo off
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,description^,drivetype 2^>NUL`) do (
if %%l equ 2 (
echo %%i is a USB drive.
)
)
Merci beaucoup @ Sparky3489, si je n’ai qu’une clé USB, je mets cela dans votre algorithme, juste après le
echo %%i is a USB drive.
Set FlashDrive=%%I
J'ai aussi changé la formulation de l'identifiant pour
Echo %%i is a USB Flash Drive~!
Ensuite, après, {et en dehors} de l'algorithme, je peux ajouter le chemin d'accès du lecteur flash, tel que ...
Set FlashPath=%FlashDrive%\Users\Public\Documents
Puis en mettant en place d’autres chemins .__ tels que
Set SourcePath=C:\Users\Public\Documents
Je peux effectuer une sauvegarde de fichier par lots pour le lecteur Flash (peut être appelée via un raccourci Windows avec une icône associée dans la fenêtre Lancement rapide ~ Recherchez "Lancement rapide", si vous avez un doute sur mon sujet).
Rem * * * * * * * * * Start Batch File * * * * * * * * * *
@Echo OFF
cls
Echo FlashDrive UpDater for
Echo.
Echo Excel, Word ...
Echo * * * * * * * * * ~ Excel SpreadSheets ~ * * * * * * * * *
XCopy /D /I /V /Y /U /S "%SourcePath%\Excel Documents\*.*" "%FlashPath%\Excel Documents\"
Echo * * * * * * * * * ~ Word Documents ~ * * * * * * * * *
XCopy /D /I /V /Y /U /S "%SourcePath%\Word Documents\*.*" "%FlashPath%\Word Documents\"
Echo.
Echo.
Echo FlashDrive = %FlashDrive%
Echo FlashPath = %FlashPath%
Echo.
Echo * Bonus Switch Info * * * * *
Echo * XCopy Switch /D ~ Copies Files Changed On or After the Specified Date.
Echo * {If no Date is Given, Copies only those Files whose
Echo * Source Time is Newer than the Destination Time}.
Echo * XCopy Switch /I ~ Copies More than One File to Destination (Assumes Destination is a Directory)
Echo * XCopy Switch /S ~ Copies Directories and Subdirectories Except Empty Ones
Echo * XCopy Switch /V ~ Verifies Each New File.
Echo * XCopy Switch /U ~ Copies only Files that Already Exist in Destination.
Echo * XCopy Switch /Y ~ Suppresses Prompting to Confirm You Want to Overwrite an Existing Destination File.
Echo.
Rem for More Info on XCopy Switches GoTo http://support.Microsoft.com/kb/128756
Echo Directory Path = %~DP0
Echo.
Echo * Batch File Name = %0 *
Echo.
Rem Echo %CD:~0,2%, {Returns "Drive Letter & Colon"}
Rem Echo %CD:~0,3%, {Returns "Drive Letter & Colon & BackSlash"}
Pause
cls
Pause
Exit
Rem * * * * * * * * * End Batch File * * * * * * * * * *
%CD:~0,2%
Cela vous donnera le lecteur en cours au format C:
, c’est-à-dire 2 premiers caractères du répertoire de travail en cours.
C:\Users\ashish>ECHO %CD:~0,2%
C:
D:\projects>ECHO %CD:~0,2%
D:
D:\projects>ECHO %CD%
D:\projects