Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Anhand von einer Schlüsseldatei Laufwerke zuordnen

Frage Entwicklung Batch & Shell

Mitglied: FlyingSader

FlyingSader (Level 1) - Jetzt verbinden

27.09.2005, aktualisiert 04.10.2005, 4603 Aufrufe, 10 Kommentare

Hallo zusammen,

ich habe das folgende Problem ich möchte meine Daten in regelmäßigen Abstanden auf einer USB Platte sichern. Die Platte bekommt aber nicht immer das gleiche Laufwerk zugewiesen. Daher möchte ich mit einem Skript eine Schlüsseldatei auf der Platte suchen. Das funktioniert auch soweit ganz gut, allerdings wird der Quelltext so wie ich es momentan laufen habe unübersichtlich

if exist "F:\hdd1.txt" set drv=F:
if exist "G:\hdd1.txt" set drv=G:
if exist "H:\hdd1.txt" set drv=H:
if exist "I:\hdd1.txt" set drv=I:
if exist "J:\hdd1.txt" set drv=J:
if exist "K:\hdd1.txt" set drv=K:
if exist "L:\hdd1.txt" set drv=L:
if not exist hdd1.txt echo Die ausgewählte Festplatte (HDD1) ist momentan nicht angeschlossen.>>imagecopy.txt

Da das für momentan vier Festplatten läuft könnt ihr euch sicher vorstellen das das Skript ziemlich lang geworden ist, jetzt würde ich das ganze gerne in eine Schleife packen bekomme es aber nicht hin.

Danke für eure Hilfe
Mitglied: sysad
28.09.2005 um 07:30 Uhr
Respekt,

das Skript hat mir sehr geholfen. Von wo aus und wann wird das gestartet?
Bitte warten ..
Mitglied: Biber
03.10.2005 um 10:05 Uhr
Moin, FlyingSader,
in welcher Zeile der Schleife sind denn die Schwierigkeiten?

...(im Batch)
for %%i in ( F G H I J K L) do @if not defined drv if exist %i:\hdd1.txt Set "drv=%i:"
if not defined drv echo Die gewählte Festplatte (HDD1) ist nicht da .... >>imagecopy.txt
if not defined drv goto :eof
....(sonst gibt es einen drv, alles prima)
Echo Sichere jetzt am %date% %time% mal auf Laufwerk %drv% .....>>imagecopy.txt
... (mach mir die Sicherung...)


HTH Frank /der Biber aus Bremen
Bitte warten ..
Mitglied: gemini
03.10.2005 um 10:48 Uhr
Also mein Stick und auch die USB-Platte behalten Ihren Laufwerksbuchstaben an allen Rechnern an denen ich das einmal eingestellt habe.

~~~~~
Wenn es auch vbs sein darf und du den Namen der USB-Platte kennst
Hier ein Schnipsel, dass _alle_ Laufwerke scannt.

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives
strUSBName = "Wie auch immer die Platte heißt"
On Error Resume Next
For Each objDrive in colDrives
If objDrive.VolumeName = strUSBName And objDrive.IsReady = True Then
MsgBox "Do something"
Else
MsgBox "Do nothing"
End If
Next
Bitte warten ..
Mitglied: FlyingSader
03.10.2005 um 13:12 Uhr
Morgen Biber,
danke für deine Hilfe vom Prinzip her funktioniert das auch alles so nur jetzt habe das Problem das zwei Platten angesteuert werden sollen hdd1.txt und hdd2.txt dies habe ich wie unten in den Skript jetzt erstellt nur findet er die hdd1.txt dann weißt er auch für hdd2.txt den entsprechenden Laufwerksbuchstaben zu

:begin

echo off
echo ............................>>imagecopy.txt
echo Datenauslagerung vom %date% >>imagecopy.txt
echo ............................>>imagecopy.txt


for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @if not defined drv if exist %%i:\hdd1.txt Set "drv=%%i:"
if not defined drv echo Die gewählte Festplatte (HDD1) ist nicht da .... >>imagecopy.txt

Echo Sichere HDD1 jetzt am %date% %time% mal auf Laufwerk %drv%>>imagecopy.txt

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do goto hdd1
echo -------------------------------->>imagecopy.txt

goto abfragehdd2

:abfragehdd2

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @if not defined drv if exist %%i:\hdd2.txt Set "drv=%%i:"
if not defined drv echo Die gewählte Festplatte (HDD2) ist nicht da .... >>imagecopy.txt
Echo Sichere HDD2 jetzt am %date% %time% mal auf Laufwerk %drv%>>imagecopy.txt

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do goto hdd2
echo -------------------------------->>imagecopy.txt
:hdd1
echo hdd1 >>test.txt
goto abfragehdd2
:hdd2
echo hdd2 >>test.txt
goto ende
:ende
echo FERTIG >>test.txt
Bitte warten ..
Mitglied: Biber
03.10.2005 um 19:56 Uhr
@FlyingSader

Also, ich habe nur versucht, die beschriebene Anforderung "handwerklich" zu lösen.

Stimme allerdings gemini uneingeschränkt zu: die ganz prickelnde Strategie ist es irgendwie nicht.
Schon bei der ursprünglichen Fragestellung, die impliziert, dass das Sicherungslaufwerk vollkommen zufällig und planlos alles zwischen Laufwerk F: und Laufwerk L: sein kann, bekam ich eine der Jahreszeit unangemessene Gänsehaut.
Und das es nun im Nachklapp sogar alle von C: bis Z: plus möglicherweise die zwei von M$ undokumentierten Laufwerksbuchstaben sein können...ähmm, hört sich nicht vertrauenserweckend an.
Und dabei ist es vollkommen unerheblich, ob Du diese Laufwerke durchscannst mit Batch, mit VBScript oder mit Assembler... ist die falsche Lösung.
Was machst Du denn, wenn irgendein Töffel eine Datei HDD1.txt auf eine RamDisk kopiert?
Oder welches ist das "richtige" Sicherungslaufwerk, wenn auf L:, K: und Y: so eine Signaldatei rumdümpelt?

Aber trotzdem nochmal zu dem Script-Fragment ein paar Anmerkungen

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) ...
Also, wenn schon so viele Lw in Frage kommen sollten... dann
a) in eine Variable damit. Weniger Tippfehlergefahr und bessere Wartbarkeit
b) und mach eine SINNVOLLE Reihenfolge, nicht alphabetisch.

Set "NormaleSichLaufwerke=L T U"
Set "AusweichLaufwerke=J F K"
Set "LetzterNotNagel=S P D"

Set "AlleDenkbarenLW=%NormaleSichLaufwerke% %AusweichLaufwerke% %LetzterNotNagel%"

for %%i in ( %AlleDenkbarenLW%) DO ...whatever

Zweite Bemerkung: Der Batch funktioniert nicht, weil Du im oberen Fall (Suche nach HDD1.txt) und im unteren Fall (HDD2.txt) beide Male die Variable %drv% benutzt.

Wenn Du unten ankommst, ist die Variable defined *gg

Nimm also da ruhig zwei Variablen %drv1% und %drv2%.. ist sauberer...

Aber unabhängig davon überschlaf erst mal die Sicherungsmimik an sich... das kann irgendwie nicht die richtige Strategie sein.

Schönen Abend

Biber
Bitte warten ..
Mitglied: FlyingSader
03.10.2005 um 20:36 Uhr
Hallo.
also das mit den ganzen Laufwerken war mehr zum Testen, allerdings habe ich 4 Laufwerke die es potenziell sein können, da es sich um 4 Speicherträger handelt wobei nicht alle angeschlossen sind. Daher muss ich vor dem Kopieren überprüfen welche Festplatten angeschlossen sind.
Ich hoffe es ist jetzt ein wenig klarer geworden was das Skript letzendlich wenn es mal fertig sein sollte tun soll
Bitte warten ..
Mitglied: gemini
03.10.2005 um 21:27 Uhr
VBScript scheint hier nicht allzu beliebt zu sein
Nun zumindest in diesem Fall bietet es eine Möglichkeit deine(n) Datenträger eindeutig zu identifizieren.
Nämlich mit der Seriennummer
objDrive.SerialNumber

Dieser Wert ist fix und mit normalen Mitteln nicht manipulierbar.
Imho allemal besser als die, da sind wir uns doch einig, suboptimale (Hallo Gerd! ) Lösung mit der hddx.txt
Bitte warten ..
Mitglied: FlyingSader
03.10.2005 um 22:28 Uhr
Da muss ich dir wohl recht geben die Lösung ist suboptimal aber funktioniert momentan völlig problemlos. Aber da mir das Skript langsam ein wenig zu große ausmaße angenommen hat bin ich ja dabei es immer mehr zu optimieren obwohl ich immer noch mehr dem Batch-File zugewandt bin. Und ich denke mal wenn es sich auf 4 Festplatten bezieht ist auch das Sicherheitsrisiko nicht wirklich groß.
Bitte warten ..
Mitglied: Biber
03.10.2005 um 23:06 Uhr
@gemini

Diese "eindeutige, mit normalen Mitteln nicht manipulierbare Serial".. das ist aber nicht zufällig das, was ich als Serial von Datenträgern kenne, oder?
Dann hätte ich nämlich schockierende Neuigkeiten für Dich:
01.
>dir l: 
02.
 Datenträger in Laufwerk L: ist BIBERS_USB03 
03.
 Datenträgernummer: 0000-0000
Aber Du hast natürlich recht, das Vorhandensein einer "HDD1.txt"-Datei als Kriterium für eine Datenträger-Identifizierung ist ein bisschen... optimistisch.
Eine oDrive.SerialNo ist da schon etwas vertrauenserweckender.

VBScript scheint hier nicht allzu beliebt zu sein..
ICH hab VBScript ganz doll lieb!!!
Bitte warten ..
Mitglied: gemini
04.10.2005 um 07:22 Uhr
Datenträger in Laufwerk L: ist BIBERS_USB03
Datenträgernummer: 0000-0000</code>
Du solltest nicht immer diese Biiligangebote kaufen, die können sich nicht mal ne richtige Seriennummer leisten. Wird halt überall gespart

Vielleicht hat die Platte wirklich 8 Nullen als sn.
Rein statistisch ist es genauso wahrscheinlich wie:
C:\>dir b:
Datenträger in Laufwerk B: ist USB MEMORY
Volumeseriennummer: 4464-BE46

Schönen Arbeitstag
gemini
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst Laufwerke aller User für Chef (20)

Frage von tsunami zum Thema Windows Server ...

Windows Server
SBS2011 Laufwerke defragmentieren bzgl. Performance (5)

Frage von saschag zum Thema Windows Server ...

Microsoft Office
gelöst Excel: Fixwerte pro Monate nach Monaten zuordnen (2)

Frage von sims zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...