Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

GELÖST

Parameter-Check in verschachtelter FOR-Schleife

Mitglied: 99046

99046 (Level 1)

05.04.2011, aktualisiert 12:57 Uhr, 3166 Aufrufe, 10 Kommentare

Hallo zusammen,
ich habe ein WinXP-Backup-Script, hier der Teil, der das USB-Laufwerk finden soll:
01.
@echo off & setlocal EnableDelayedExpansion  
02.
set LW=  
03.
 
04.
::	dies: 
05.
for /f %%a in ('fsutil fsinfo drives^|find ":"') do for /f "delims=\" %%i in ('fsutil fsinfo drivetype %%a^|find "Austauschbar"') do echo %%i 
06.
::	... zeigt mir korrekt alle austauschbaren LW,  
07.
::	incl. Wechseldatenträgerlaufwerke + USB-LW 
08.
 
09.
::	dies ( Problem 1 ): 
10.
for /f %%a in ('fsutil fsinfo drives^|find ":"') do for /f "delims=\" %%i in ('fsutil fsinfo drivetype %%a^|find "Austauschbar"') do if exist %%i:\Kennung.dat set LW=%%i 
11.
::	... bringt pro Wechseldatenträgerlaufwerk-Zugriff einen Windows Fehler. 
12.
 
13.
::	also versuche ich:   
14.
for /f %%a in ('fsutil fsinfo drives^|find ":"') do for /f "delims=\" %%i in ('fsutil fsinfo volumeinfo %%a^|find "Volumename"') do If /i %%i=="Volumename : xxxUSBxxx" echo "YES" 
15.
 
16.
::	Stick ist entsprechend benannt   - aber der letzte Teil ist fehlerhaft: 
17.
::	Abfrage, ob %%i "usb" enthält ...  ( Problem 2 ) 
18.
do If /i %%i=="Volumename : xxUSBxx" echo "YES" 
19.
if not defined LW echo Laufwerk nicht erkannt! & goto :eof  
20.
echo Laufwerk gefunden: %LW%
Die Lösungen unter:
http://www.administrator.de/index.php?mod=search&what=all&query ...
helfen mir hier nicht weiter. ( "set LW=%~d0" ist klasse ! )

Hat jemand einen Tip, wie ich Problem 1 + gerne auch 2 lösen kann ?
Wäre klasse.

Vielen Dank !
Rob
Mitglied: pieh-ejdsch
05.04.2011 um 13:26 Uhr
moin robo400,

Dein Ansatz ist schon gut, nur die Zerlegung der Ausgabe der Einzelnen Ergebnisse für die Forschleife passt nicht ganz.

01.
for /f "tokens=1*" %%a in ('fsutil fsinfo drives') do ( 
02.
  for %%c in (%%b) do ( 
03.
    for /f "tokens=1* delims=:" %%i in ('fsutil fsinfo drivetype %%c'') do @echo "%%i"|find "Austauschbar" >nul && echo %%j 
04.
) )
[edit]
etwas mehr %%b und %%c reingeschrieben ...
[/edit]


Gruß Phil
Bitte warten ..
Mitglied: 99045
05.04.2011 um 13:40 Uhr
Moin ph,

wenn du die Fehler in deinem Beispiel beseitigst, wird eventuell ein Schuh draus.
Bitte warten ..
Mitglied: pieh-ejdsch
05.04.2011 um 14:35 Uhr
jo schon verbessert.
vorhins war noch ein Stiefel

Gruß Phil
Bitte warten ..
Mitglied: 99045
05.04.2011 um 15:05 Uhr
Leider ist es immer noch ein Stiefel und funktioniert nur unter Win7. Unter XP erfolgt die Ausgabe von fsutil fsinfo drives mit einem Nullbyte hinter jedem "\", daher wird nur das erste Tokenm nämlich "Laufwerk:" verarbeitet. Außerdem ist da in Zeile 3 immer noch ein Auslassungszeichen zuviel.
Und da unser Fragesteller ja wohl das Script unter XP benutzen möchte, kommt man nur mit einer Zeile 1
01.
fsutil fsinfo drives | find ":\" > wasweissich.txt 
(oder so in etwa) zu Zuge, bevor man weitermacht.

Und da du damit angefangen hast, darfst du deine Lösung auch selbst vervollständigen.
Bitte warten ..
Mitglied: 99046
05.04.2011 um 15:42 Uhr
Moin ph,
danke für Deine schnelle Reaktion !
Ich bastel daran die ganze Zeit rum, aber 'will noch nicht'.

mit dem code in Zeilen 4-7 meines 1. Postings bekomme ich korrekt alle austauschbaren LW incl. Wechseldatenträgerlaufwerke + USB-LW angezeigt.
mit:
01.
for /f "tokens=1*" %%a in ('fsutil fsinfo drives') do (  
02.
  for %%c in (%%b) do (  
03.
    for /f "tokens=1* delims=:" %%i in ('fsutil fsinfo drivetype %%c') do @echo "%%i"|find "Austauschbar" >nul && echo %%j ))
oder:
01.
for /f "tokens=1*" %%a in ('fsutil fsinfo drives') do (  
02.
  for %%c in (%%b) do (  
03.
    for /f "tokens=1* delims=:" %%i in ('fsutil fsinfo drivetype %%c'') do @echo "%%i"|find "Austauschbar" >nul && echo %%j ))
... passiert im Moment nichts - kein Output.
( Ist:
01.
... drivetype %%c'') 
so von Dir beabsichtigt ? )

Hast Du noch 'n Tip ? Ich wäre sehr dankbar.

Gruß, Rob
Bitte warten ..
Mitglied: pieh-ejdsch
06.04.2011 um 00:37 Uhr
Nee keine Absicht - schussselfehler ist ein Hochkomma zuviel.

Es gibt zwar noch so paar andere Möglichkeiten um den möglichen USB auszulesen über Bordmittel -> ohne das ein Fehler bei A:\ käme
01.
Über eine InI auf dem USB mit "DIR" und den entprechenden Inhalt und DateiAttributen 
02.
for %%i in (a b 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 dir /b/a-shra-d "%%i:\USBDriveXYZ.ini" >nul 2>nul && findstr USBDriveXYZ "%%i:\USBDriveXYZ.ini" >nul 2>nul && set "BackupLW=%%i" 
03.
echo %BackupLW% 
04.
 
05.
und/oder Über die Größe des Laufwerkes 
06.
for %%i in (a b 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 for /f %%j in ('chkdsk %%i:^|findstr Speicherplatz 2^>nul') do if %%j equ 15671296 set "BackupLW=%%i" 
07.
echo %BackupLW% 
08.
 
09.
etc..
Bei Kombinationen dieser Sachen kann mit Großer Sicherhiet davon ausgegangen werden das es das Richtige Laufwerk ist

so müsste es auch reichen
01.
@echo off 
02.
set "Volumename=XXXUSBXX" 
03.
 
04.
set "BackupLW=Nicht gefunden" 
05.
for /f "tokens=*" %%a in ('fsutil fsinfo drives^|more') do ( 
06.
  for %%c in (%%a) do echo "%%c"|findstr "\\">nul&& fsutil fsinfo drivetype %%c |more|findstr /b "Austauschbar" >nul&& fsutil fsinfo volumeinfo|more|findstr /b "Volumename"|Findstr "%Volumename%" >nul && Set "BackupLW=%%c" 
07.
08.
echo %BackupLW% 
09.
pause
Gruß Phil
Bitte warten ..
Mitglied: 99045
06.04.2011 um 02:15 Uhr
Alternativvorschlag: Warum nicht einfach nur nach dem Volumelabel suchen?

01.
:: Laufwerk nach Volumelabel ermitteln 
02.
 
03.
@echo off & setlocal enabledelayedexpansion 
04.
set Liste= 
05.
Set Checklabel=IRGENDWAS 
06.
set LW= nicht gefunden 
07.
for /F "skip=1" %%a in ('fsutil fsinfo drives ^| find ":\"') do set "Liste=!Liste! %%a" 
08.
 
09.
:: Laufwerksbuchstaben mit Backslash 
10.
rem @echo %liste% 
11.
:: hier dann z. B. evtl. den Drivetyp ermitteln 
12.
 
13.
:: hiermit Volumelabel ermitteln 
14.
: Laufwerksbuchstaben ohne Backslash 
15.
Set Liste=%liste:\=% 
16.
@echo %liste% 
17.
 
18.
for %%a in (%liste%) do for /f "tokens=6" %%l in ('vol %%a') do if "%%l"=="%CheckLabel%" set LW=%%a\ 2>nul 
19.
@echo Backuplaufwerk %LW% 
20.
 
21.
pause
Bitte warten ..
Mitglied: 99046
06.04.2011 um 11:36 Uhr
Danke für eure Unterstützung !

bin nah dran:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set Liste= 
03.
Set Checklabel=USB 
04.
set LW= nicht gefunden 
05.
for /F "skip=1" %%a in ('fsutil fsinfo drives ^| find ":\"') do set "Liste=!Liste! %%a" 
06.
 
07.
Set Liste=%liste:\=% 
08.
for %%a in (%liste%) do for /f "tokens=6" %%l in ('vol %%a') DO set "LABEL=%%l" && DO if "%LABEL:~0,3%"=="%CheckLabel%" set LW=%%a\ 2>nul 
09.
 
10.
echo. && @echo Backuplaufwerk %LW% && echo. && pause
Hier passt es noch nicht:
01.
for %%a in (%liste%) do for /f "tokens=6" %%l in ('vol %%a') DO set "LABEL=%%l" && DO if "%LABEL:~0,3%"=="%CheckLabel%" set LW=%%a\ 2>nul
Habt ihr noch n Tip ?
Danke !
Bitte warten ..
Mitglied: 99045
06.04.2011 um 11:58 Uhr
Ändere die Zeile
01.
for %%a in (%liste%) do for /f "tokens=6" %%l in ('vol %%a') DO set "LABEL=%%l"  && DO if "%LABEL:~0,3%"=="%CheckLabel%" set LW=%%a\ 2>nul
in

01.
for %%a in (%liste%) do for /f "tokens=6" %%l in ('vol %%a') DO set "LABEL=%%l" & if "!LABEL:~0,3!"=="%CheckLabel%" set LW=%%a\ 2>nul
LABEL ist auch ein Systembefehl, man sollte solche Namen nicht als Variablen und auch nicht als Sprungmarken verwenden, irgendwann führt das sicher mal zu Problemen.
Bitte warten ..
Mitglied: 99046
06.04.2011 um 12:20 Uhr
Klasse !
Jetzt passt es.

Noch mal Danke für eure prima Unterstützung -
und auch für den letzten Hinweis !

Gruß,
Rob
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Verschachtelte FOR-Schleife mit einem Argument
gelöst Frage von mp-homeBatch & Shell3 Kommentare

Hallo Forum, ich versuche mehrere FOR-Schleifen in eine verschachtelte FOR-Schleife zu ändern. Leider scheine ich zu doof für dieses ...

Batch & Shell
Verschachtelte For Schleife für Batch Neuling
Frage von yperiuBatch & Shell3 Kommentare

Hallo liebe Profis, ich habe eine sehr umfangreiche Benchmark-Schleife zum Laufen zu bringen, die ich ohne For 72 mal ...

Batch & Shell
Zähler in FOR Schleife als Parameter für Funktionsaufruf
gelöst Frage von robxBatch & Shell11 Kommentare

Hallo, ich will in einer FOR Schleife eine Funktion aufrufen, 1. Parameter soll ein Zähler sein, der sich jeweils ...

Batch & Shell
Ungültiger Parameter icacls in FOR-Schleife
gelöst Frage von blue0711Batch & Shell10 Kommentare

Hallo, ich steh etwas auf dem Schlauch. Folgendes bringt mir immer nur die Fehlermeldung Ungültiger Parameter "Domänen-Admins" und Ungültiger ...

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 12 StundenRouter & Routing2 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 18 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 23 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

Sonstige Systeme
7-zip: Programm frägt nach Passwort erst bei einzelnen Dateien
Frage von freeskierchrisSonstige Systeme7 Kommentare

Guten Morgen, ich habe ein Problem beim Arbeiten mit 7-zip: Wenn ich die einzelnen Dateien zu einem Archiv verpacke ...