Подтвердить что ты не робот

Пакет Windows Script Получить имя текущего диска

У меня есть командный файл с ключом usb. Мне нужно знать имя диска, в котором находится пакет.

Например, если E:\mybatch.bat, он должен найти E:\то же самое для F: \, G:\etc.., когда он откроется.

Как я могу сделать это в пакете script. (Windows)

4b9b3361

Ответ 1

%CD% - это то, что вы ищете. Он печатает текущий рабочий каталог командного файла или команды, запускающей его. Если ваш командный файл находится в корневом каталоге диска, он просто распечатает букву диска, иначе вам придется проанализировать первые 2 символа.

Пример:

echo %CD%

печатает

E:\

на флеш-накопителе, установленном на E:.

Обновление: как сказал Андрей в комментариях, если вы просто ищете первые три символа пути, используйте вместо него% CD%:

%CD:~0,3%

Это приведет к E:\, например, в любом месте на диске.

Ответ 3

Если вы запускаете изнутри .CMD/.BAT файл, вы можете использовать %~dp0 для получения текущего/рабочего каталога. Это немного безопаснее, поскольку он знает о путях UNC и тому подобных. Ссылка для синтаксиса этой переменной доступна здесь.

Ответ 4

Вы можете найти все буквы USB-накопителей с любого диска с этим.

@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.
        )
        )

Ответ 5

Спасибо очень много @Sparky3489, если у меня есть только один USB-накопитель, я помещаю это в ваш алгоритм, сразу после

echo %%i is a USB drive.
Set FlashDrive=%%I

Я также изменил формулировку идентификатора на

Echo %%i is a USB Flash Drive~!

Затем, After, {и Outside} Алгоритм, я могу добавить путь к Flash-приводу, например...

Set FlashPath=%FlashDrive%\Users\Public\Documents

Затем, установив другие пути Например,

Set SourcePath=C:\Users\Public\Documents

Я могу сделать пакетный файл BackUp для флеш-накопителя (может быть вызван через Windows Short-Cut с ассоциированным значком в вашем окне быстрого запуска ~ Поиск "Быстрый запуск", если в сомнении, о чем я говорю).

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 * * * * * * * * * *