web-dev-qa-db-fra.com

Script batch Windows Obtenir le nom du lecteur actuel

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)

20
SBSTP

%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.

34
John Leehey

M $ documentation " Utilisation de paramètres de lot "

Modificateur:% ~ d0

Description: développe% 0 en une lettre de lecteur.

17
Kai K.

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 .

9
ewall

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.
        )
        )
1
sparky3489

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 * * * * * * * * * *
0
JollyChollie
%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
0
Ashish Namdev