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
GELÖST

Über Set einer Variablen mehrere Verzeichnisspfade zuweisen

Frage Entwicklung Batch & Shell

Mitglied: peterpan33

peterpan33 (Level 1) - Jetzt verbinden

18.05.2010 um 13:52 Uhr, 3400 Aufrufe, 14 Kommentare

Hallo,
ich hab folgendes Problem. Ich habe ein kleine Batch datei geschrieben, die alle x min einen Ordner auf dessen Inhalt überprüft. Den Pfad des Ordners habe ich über "set" eine Variabel zugewiesen.
01.
SET "Order=D:\Ordner1"
Nun würde ich aber gerene X ordner überprüfen. Also wenn in Ordner 1 oder Ordner2 oder Ordner3 eine Datei dann gehe zu usw.
meine Frage, wie kann ich meine Set Variable so erweitern, dass sie sich auf mehrere Ordner bezieht.
also sollte in der art aussehen:
01.
SET "Order=D:\Ordner1;D:\Ordner2;D:\Ordner3"
vielen Dank für Hilfe und lieben Gruß
Mitglied: 60730
18.05.2010 um 13:58 Uhr
Servus,

im prinzip kannst du das auch anders lösen...

Beispiel
01.
dir %%1 
02.
pause
Und das startetst du dann mit

  • scriptname Ordner1
  • scriptname Ordner2

Du kannst es aber auch als unterpunkt lösen:

01.
:para 
02.
SET "Ordner=D:\Ordner1" && :call sub1 
03.
SET "Ordner=D:\Ordner2" && :call sub1 
04.
 
05.
goto end 
06.
 
07.
:sub1 
08.
dir %Ordner% 
09.
pause 
10.
 
11.
:end
.. und nach Rom führen auch noch andere Wege - probier es erstmal mit den beiden oberen.

Gruß

Ps: Wenn wir wüßten, was du da (in den Ordnern) suchst, wäre es einfacher, als Beispiel:

01.
if exist D:\Ordner1\*.txt SET "Ordner=D:\Ordner1" && :call sub1
Bitte warten ..
Mitglied: peterpan33
18.05.2010 um 14:17 Uhr
Hallo,
danke für die schnelle Anwort, leider werde ich nicht ganz schlau daraus.
Also es geht mir nicht ums suchen. Ich habe folgendes
01.
SET "ORDNER=D:\Ordner1\*JPG" 
02.
:NEU 
03.
IF EXIST %ORDNER% GOTO PROGRAMM 
04.
ping -n 5 >NUL 
05.
GOTO NEU
So nun will ich ihn aber in mehreren Ordnern nach *JPG suchen lassen!
Danke und Gruß
Bitte warten ..
Mitglied: bastla
18.05.2010 um 14:51 Uhr
Hallo peterpan33!

Vielleicht so:
01.
:NEU 
02.
dir /b /a-d D:\Ordner1\*jpg D:\Ordner2\*.jpg "E:\Noch ein Ordner\*.jpg" >nul 2>&1 && GOTO PROGRAMM 
03.
ping -n 5 >NUL 
04.
GOTO NEU 
05.
 
06.
:PROGRAMM 
07.
for /f "delims=" %%i in ('dir /s /b /a-d D:\Ordner1\*jpg D:\Ordner2\*.jpg "E:\Noch ein Ordner\*.jpg" 2^>nul') do echo Bearbeite "%%i" 
08.
goto :NEU
Voraussetzung ist hier, dass es nicht in Unterordnern der zu überprüfenden Ordner ".jpg"-Dateien gibt, die nicht bearbeitet werden sollen ...

Grüße
bastla
Bitte warten ..
Mitglied: peterpan33
18.05.2010 um 17:17 Uhr
Hallo hmm so ganz ist das immernoch nicht die Lösung!
Also ich hab jetzt folgendes versucht:
01.
  
02.
SET "ORDNER1=C:\Test\*.JPG" 
03.
SET "ORDNER2=C:\Test1\*.JPG" 
04.
:NEU 
05.
IF EXIST %ORDNER1% GOTO PROGRAMM 
06.
IF EXIST %ORDNER2% GOTO PROGRAMM 
07.
ping 0.0.0.0 -n 5 >nul 
08.
GOTO NEU 
09.
:PROGRAMM 
10.
FOR %%I IN (%ORDNER1%) DO MOVE %%I . >NUL 
11.
FOR %%I IN (%ORDNER2%) DO MOVE %%I . >NUL 
12.
pause
hmm mir fällt gerade ein kann ich nicht einfach eine Variablen festlegen, die sich auf alle *.JPG eines Laufwerks bezieht? Also ich habe z.B eine JPG datei in verschiedenen Unterordnern eines Laufwerks, weiß aber nicht in welchem. Kann ich der Variablen sagen, du bist diejenige die sich auf diese bezieht und dann die IF befehle durchlaufen lassen?
Danke und lieben Gruß
Bitte warten ..
Mitglied: bastla
18.05.2010 um 17:28 Uhr
Hallo peterpan33!
Kann ich der Variablen sagen, du bist diejenige die sich auf diese bezieht und dann die IF befehle durchlaufen lassen?
Ich hätte in diesem Fall einfach zu
01.
:NEU 
02.
dir /s /b /a-d D:\*jpg>nul 2>&1 && GOTO :PROGRAMM 
03.
ping -n 5 >NUL 
04.
GOTO :NEU 
05.
 
06.
:PROGRAMM 
07.
for /f "delims=" %%i in ('dir /s /b /a-d D:\*.jpg 2^>nul') do move "%%i" 
08.
pause
oder, wenn nur das Verschieben in den aktuellen Ordner passieren soll, überhaupt gleich zu
01.
:NEU 
02.
for /f "delims=" %%i in ('dir /s /b /a-d D:\*.jpg 2^>nul') do move "%%i" 
03.
ping -n 5 >NUL 
04.
GOTO :NEU
geraten (beides ungetestet), aber da kommt leider nur im ersten Vorschlag (und das nur implizit - "&&" steht nämlich für "nur ausführen, wenn beim vorigen Befehl kein Fehler aufgetreten ist", was hier also bedeutet, wenn eine passende Datei gefunden wurde) ein "IF" vor ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
18.05.2010 um 18:05 Uhr
Wenn schon fast alle mitmachen, versuch ich es auch mal (ungetestet):

Ist wohl durch >NUL noch nicht aufgefallen das Ping eine Adresse braucht.

01.
@Echo off 
02.
(set Ordner="%ALLUSERSPROFILE%" "%USERPROFILE%") 
03.
:NEU 
04.
For %%A in (%Ordner%) Do Call :Process %%A 
05.
ping -n 5 Localhost >NUL 
06.
Echo %time:~0,8% 
07.
GOTO NEU 
08.
:Process 
09.
 Echo %%A 
10.
 For /R "%~1" %%B in (*.jpg) Do Echo move "%%B" . 
11.
 
Wenn die Ausgabe richtig erscheint, das Echo vor dem Move entfernen.

Gruß
LotPings

PS: Aus mir noch nicht erklärlichen Gründen funktioniert dies nicht:
For %%A in (%Ordner%) Do For /R "%%~A" %%B in (*.jpg) Do Echo move "%%B" .
Bitte warten ..
Mitglied: bastla
18.05.2010 um 18:11 Uhr
Hallo LotPings!
Ist wohl durch >NUL noch nicht aufgefallen das Ping eine Adresse braucht.
Lag bei mir mehr am Nicht-Testen ...

Grüße
bastla
Bitte warten ..
Mitglied: peterpan33
18.05.2010 um 18:32 Uhr
Hello,
super klappt so wie erhofft. Vielen Dank. Sogar mit Variable also:
01.
SET "Ordner=C:\Ordner\*.JPG" 
02.
:NEU  
03.
dir /s /b /a-d %Ordner%>nul 2>&1 && GOTO :PROGRAMM  
04.
ping -n 5 >NUL  
05.
GOTO :NEU  
06.
 
07.
:PROGRAMM  
08.
for /f "delims=" %%i in ('dir /s /b /a-d %Ordner% 2^>nul') do move "%%i" .>nul 
09.
pause
Wie kann ich auch auf Ordner mit Leerzeichen im Verzeichnisnamen zugreifen?
was bedeutet beim Dir befehl die Syntax /a-d ?
Danke
Bitte warten ..
Mitglied: peterpan33
18.05.2010 um 18:43 Uhr
Holla,
bei mir ist der ping wie folgt:
01.
ping 0.0.0.0 -n 5 >nul
dann findet er zwar nix aber soll ja auch nur warten
Gruß
Bitte warten ..
Mitglied: bastla
18.05.2010 um 21:12 Uhr
Hallo peterpan33!
Wie kann ich auch auf Ordner mit Leerzeichen im Verzeichnisnamen zugreifen?
Indem Du Sie unter Anführungszeichen setzt - daher:
dir /s /b /a-d "%Ordner%">nul 2>&1 && GOTO :PROGRAMM
Hast Du nach der "pause" noch mehr vor? Wenn nein würde ich (wie in meinem zweiten Beispiel oben) die eine relevante Zeile aus dem Unterprogramm einfach nach oben ziehen, wodurch sie sich mit der ohnehin nötigen Schleifen kombinieren lässt (auf Wunsch auch mit der - nicht erforderlichen - Angabe des Zieles "."):
for /f "delims=" %%i in ('dir /s /b /a-d "%Ordner%" 2^>nul') do move "%%i" .>nul
was bedeutet beim Dir befehl die Syntax /a-d ?
Es sollen keine "directories" (sondern nur Dateien) aufgelistet werden - vermutlich nicht nötig (es sei denn, ein Ordner hieße etwa "Alle.meine.jpg"), aber auch nicht schädlich ...
Noch kurz zum unten angeführten
01.
ping 0.0.0.0 -n 5 >nul
Dagegen hätte LotPings ja sicher kaum Einwände (obwohl ich mit 127.0.0.1 eher zu einer existierenden IP greifen würde) - es war nur in allen Beispielen oberhalb die Adresse (0.0.0.0) nicht enthalten ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
18.05.2010 um 21:24 Uhr
Wenn du deinen Code postest , sollte er auch komplett sein.
Wie bastla schon angemerkt hat fehlte das 0.0.0.0 bisher und das bessere 127.0.0.1 entspricht Localhost.

Außerdem scheinst du meine Variante nicht ausprobiert zu haben,
denn die war von Anfang an auf Ordner-/Dateinamen mit Leerzeichen vorbereitet.

Gruß
LotPings
Bitte warten ..
Mitglied: peterpan33
20.05.2010 um 15:06 Uhr
Ja da hast du natürlich recht. Mein Fehler, verzeihung dafür!
Als Wiedergutmachung hier jetzt mein Code vollständig (so hoffe ich). Bei mir funktioniert er. Lotpings Lösung hat bei mir leider nicht funktioniert. Weiß nicht warum??
01.
SET "Ordner=C:\Test 1\*.JPG" 
02.
:NEU 
03.
DIR /s /b /a-d "%Ordner%">NUL 2>&1 && GOTO :PROGRAMM  
04.
ping 0.0.0.0 -n 5 >NUL 
05.
rem oder halt ping -n 5 Localhost >NUL  
06.
GOTO NEU 
07.
:PROGRAMM 
08.
FOR /f "delims=" %%I IN ('DIR /s /b /a-d "%Ordner%" 2^>NUL') DO MOVE "%%I" . >NUL 2>NUL 
09.
ECHO hier können jetzt noch weitere Bearbeitungsschritte eingefuegt werden 
10.
GOTO NEU
Vielen Dank für die Hilfe und besten Gruß
Bitte warten ..
Mitglied: LotPings
20.05.2010 um 15:26 Uhr
Hallo peterpan33,

von dem ungünstigen 0.0.0.0 kannst du dich wohl schwer trennen

Schön wenn es klappt.

Jetzt noch den Beitrag auf gelöst setzen und wir kriegen alle schöne Pfingsten.

Gruß
Lotpings
Bitte warten ..
Mitglied: peterpan33
20.05.2010 um 15:49 Uhr
bzg. 0.0.0.0 .... ein wenig Eigenleistung soll ja auch noch drinstecken
Besten Gruß
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Variablen und Set
gelöst Frage von CerauxBatch & Shell2 Kommentare

Hallo, ich weiß nicht wie man mehrere Wörter in eine Variable machen? Also so: if %var1%%var2% echo Hallo %var1%=Dies ...

Batch & Shell
Set Anweisung mit einer Variable bearbeiten
Frage von RaidManBatch & Shell3 Kommentare

Guten Abend zusammen, tschuldigung für die späte sonntägliche Frage ;) ich möchte von einem String den Anfang kürzen und ...

Batch & Shell
Dateinamen mit Punkt einer Variablen zuweisen
gelöst Frage von DanilowitzBatch & Shell4 Kommentare

Hallo Leute, Bin neu hier im Forum und hätte eine Frage zur Batchprogrammierung, zu welcher ich im Internet keine ...

Batch & Shell
Batch: Variable einen Wert zuweisen
gelöst Frage von sklaimBatch & Shell7 Kommentare

Hallo zusammen! Ich bin gerade am verzweifeln Ich habe in Batch 2 Variablen: Wenn ich mir von diesen den ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 4 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 7 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 8 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 11 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...