Webové stránky K5
Články zobrazeny celkem: 1257181x  
Nabídka
Úvod
Přehled
K5
Masakr
Tipy
Odkazy
Vyhledávání

Reklama

How to find a drive letter for CD/DVD/USB/etc? Tisk E-mail
Hodnocení čtenářů: / 0
SlabéVynikající 
Napsal K5   
Thursday, 24. January 2008
Aneb jak ve Windows XP najít pomocí dávkového souboru písmenko disku, které má přiřazené nějaké dopředu neznámé zařízení? Tento zdánlivě jednoduchý úkol (kouknu a vidím) se mění na noční můru v okamžiku, kdy potřebujete, aby se "něco dělalo samo" třeba v LOGON skriptu nebo v AUTORUN-u, neboť předem nelze spoléhat na to, že systémový disk je vždy a na všech počítačích právě a jen C: a CD/DVD mechanika vždy jen a pouze D: a tak dále. Proto jsem si napsal baťáček, který umí najít "to správné písmenko" disku.

Teoreticky lze testovat všechna písmenka disků "naslepo" prostým if exist driveletter:\path, ale zkuste si to třebas na disketové mechanice, ve které není disketa - Windows v tomto případě zcela nepochopitelně vyzvou uživatele, aby s prázdnou mechanikou něco udělal! To je automatizace jako stehno.

Takže můj baťáček si nejprve zjistí, jaké disky jsou v počítači, přesněji, jaká písmenka disků kdy operační systém Windows XP nějakému zařízení přidělil (mezi nimi jsou ale i písmenka odpojených a dávno nepoužívaných svazků), pak zjistí, jestli je na těchto písmencích nějaký filesystém (namontovaný sazek) a teprve tam, kde nějaký Windowsama čitelný filesystém je, hledá složku, kterou si nadřízený program přeje najít. Čili žádné otravování uživatele nenastává a nadřízený program dostane seznam místních disků, na kterých se kýžená složka nachází.

Praktické využití: v Naplánovaných úlohách nadefinuji úlohu, která jednou za čas spustí dávku, jež má za úkol provést odzálohování životně důležitých dat na jeden nebo více USB flashdisků a nebo třeba na 500 GB WD MyBook. Teoreticky lze sice zařídit, že vyjmenovaná mass storage zařízení budou mít vždy stejná písmenka, ale v praxi nastávají situace, kdy se Windows XP rozhodnou, že přidělí písmenka jiná. A protože já se nechci o zálohování starat, naopak chci, aby běželo samo a spolehlivě, nechám na něm, aby si našlo cíl, kam data uložit. Na discích, kde chci, aby se mi sama od sebe líhla záloha, vytvořím složku, jejíž jméno bude jedinečné (aby se nemohlo stát, že dojde k nechtěné záměně) a zálohovací dávkový soubor pak nebude dělat nic jiného, než že zavolá můj baťáček a do nalezených destinací nakopíruje data (jen soubory, které se od posledního spuštění zněnily: mají nastaven atribut "archive").

Příkaz pro spuštění zálohování (Naplánované úlohy):

cmd /v /c disk:\cesta\ZALOHUJ.BAT

Spouštěný soubor ZALOHUJ.BAT:

@echo off
set DLSUBBAT=%~dp0
call %DLSUBBAT%FindDriveLetters.bat \$backup$ /0
set SWA=/A
:smycka
if "%DLCOUNT%" equ "0" exit
if "%DLCOUNT%" equ "1" set SWA=/M
set CIL=!DLRESULT%DLCOUNT%!
xcopy /Q %SWA% /S /C /I /H /R /K /Y "%ALLUSERSPROFILE%\..\MojeLoginName\Dokumenty\*.*" "%CIL%\$backup$\Dokumenty" > nul
xcopy /Q %SWA%    /C /I /H /R /K /Y "%ALLUSERSPROFILE%\..\MojeLoginName\Plocha\*.doc"  "%CIL%\$backup$\Plocha"    > nul
xcopy /Q %SWA%    /C /I /H /R /K /Y "%ALLUSERSPROFILE%\..\MojeLoginName\Plocha\*.xls"  "%CIL%\$backup$\Plocha"    > nul
set /A DLCOUNT=%DLCOUNT% - 1
goto smycka

Všechny tři dávkové soubory mohou být v jedné společné složce (například: C:\Skripty\), ale není to podmínkou, pokud se příslušně upraví třetí řádek (volání FindDriveLetters.bat).

Ve výše uvedeném příkladu je potřeba upravit cestu "%ALLUSERSPROFILE%\..\MojeLoginName\... a příkazy xcopy podle skutečné zálohovací potřeby. Teoreticky ale stačí zaměnit MojeLoginName za LOGIN uživatele (pozor na národní znaky, musí být v kódování Latin 2!), vytvořit v rootu nějakého disku složku $backup$ a napsat do Spustit... příkaz cmd /v /c C:\Skripty\ZALOHUJ.BAT a odstartovat ho (nebo spustit TEST.BAT). Ve složce $backup$ by se pak měly objevit soubory z Dokumentů a Plochy.

Dávku i s příkladem si můžete stáhnout odsud (2 KB).

 
< Předch.   Další >

Google

Reklama

Nahlédněte
Futurama
BSG
MAME
SORD M5
VMware
Total Commander
ALIX a m0n0wall
Cisco PIX
Nejnovější
Nejčtenější
Viz též
   Úvod arrow K5 arrow Taxem zase jednou něco dělal arrow How to find a drive letter for CD/DVD/USB/etc?
Powered by Joomla!