Windows Batch Script obtenir le nom du lecteur courant
j'ai un fichier de commandes qui est sur une clé usb. J'ai besoin de savoir le nom du disque, le lot est dans.
Exemple, si c'est E:mybatch.chauve-souris, il devrait trouver E: même chose pour F: G: etc.. quand il est ouvert.
Comment ai-je pu faire cela dans le script de fournée. (Windows)
6 réponses
%CD%
est ce que vous cherchez. Il affiche le répertoire de travail courant du fichier batch ou de la commande qui l'exécute. Si votre fichier batch est sur la racine du lecteur, il va juste Imprimer la lettre de lecteur, sinon vous aurez à analyser les 2 premiers caractères.
Exemple:
echo %CD%
imprime
E:\
sur une clé USB montée sur E:.
mise à jour: comme Andriy l'a dit dans les commentaires, si vous êtes à la recherche des trois premiers les caractères du chemin, puis utilisez ceci à la place de %CD%:
%CD:~0,3%
résultat E:\
, par exemple, n'importe où sur le disque.
M$ de la documentation " en utilisant les paramètres batch" dit:
modificateur: %~d0
Description: étend %0 à une lettre de lecteur.
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 seule clé USB, je mets cela dans votre algorithme, juste après le
echo %%i is a USB drive.
Set FlashDrive=%%I
j'ai aussi modifié le Libellé de l'Identificateur
Echo %%i is a USB Flash Drive~!
puis, après, {et en dehors} de l'algorithme, je peux ajouter le chemin du lecteur Flash tel que...
Set FlashPath=%FlashDrive%\Users\Public\Documents
puis en mettant en place d'autres chemins
Set SourcePath=C:\Users\Public\Documents
je peux faire une sauvegarde de fichier par lot pour la clé USB, (peut être appelé Via Windows Short-Cut avec une icône associée dans votre fenêtre de Lancement rapide ~ Rechercher "Lancement rapide", si en doute à ce que je parle).
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 courant dans le format C:
, c'est-à-dire les 2 premiers caractères du répertoire de travail actuel
C:\Users\ashish>ECHO %CD:~0,2%
C:
D:\projects>ECHO %CD:~0,2%
D:
D:\projects>ECHO %CD%
D:\projects