tommylik
Goto Top

Vor dem Verzeichniss erstellen überprüfen ob Ordner vorhanden sind

Hallo,

Ich habe mir folgendes geschrieben:


mkdir D:\Projects
mkdir D:\Projects\Siemens
mkdir D:\Projects\Siemens\01_Werk
mkdir D:\Projects\Siemens\02_S7
mkdir D:\Projects\Siemens\03_SiVArc
mkdir D:\Projects\Siemens\04_WinCCflexible
mkdir D:\Projects\Siemens\05_Remote_Operate
mkdir D:\Projects\Siemens\06_Dokumentation
mkdir D:\Projects\Siemens\07_ZAUE
mkdir D:\Projects\Siemens\02_S7\01_Bibliothek
mkdir D:\Projects\Siemens\02_S7\02_Projekte
mkdir D:\Projects\Siemens\02_S7\03_Archive
mkdir D:\Projects\Siemens\02_S7\04_Geraetekatalog
mkdir D:\Projects\Siemens\02_S7\05_Referenzen
mkdir D:\Projects\Siemens\03_SiVArc\01_Metamodell
mkdir D:\Projects\Siemens\03_SiVArc\02_Textlisten
mkdir D:\Projects\Siemens\03_SiVArc\03_Sprachdatenbank
mkdir D:\Projects\Siemens\03_SiVArc\04_Registry_Onlinehilfen
mkdir D:\Projects\Siemens\04_WinCCflexible\01_Vorlagen
mkdir D:\Projects\Siemens\04_WinCCflexible\02_Symbolbibliothek
mkdir D:\Projects\Siemens\04_WinCCflexible\03_Runtime
mkdir D:\Projects\Siemens\04_WinCCflexible\04_UserDictionary

Funktioniert ohne Probleme. Es wird immer das Laufwerk D genutzt.

Könnte mir einer von Euch dabei helfen wie die Batchdatei abgeändert werden muss das vorher
überprüft wird ob alle Ordner vorhanden sind.

Sollte einer oder mehrere Ordner fehlen sollen sie natürlich angelegt werden mit einer Mitteilung
welcher Ordner gefehlt hat.

Ich brauche diese Mitteilung damit ich weiß welche Dateien ich noch manuell in die Ordner kopieren muss.

Vielen Dank im voraus.

Tommylik

Content-Key: 282477

Url: https://administrator.de/contentid/282477

Printed on: April 20, 2024 at 14:04 o'clock

Member: emeriks
emeriks Sep 10, 2015 at 06:31:36 (UTC)
Goto Top
Hi,
etwa so
if exist D:\Projects (
echo D:\Projects bereits vorhanden
) else (
echo D:\Projects nicht vorhanden
mkdir D:\Projects
copy xxxxx D:\Projects\xxxxx
)


E.
Member: Tommylik
Tommylik Sep 10, 2015 at 07:52:34 (UTC)
Goto Top
Hallo emeriks,

Vielen Dank für deine Hilfe das wäre schon eine Lösung.
Aber jetzt wo ich sehe wie die Batch Datei arbeiten würde, denke ich das das etwas unpraktisch wäre.

Besser wäre es, wenn die Überprüfung in einem Rutsch durcharbeitet und die fehlende Ordner während dessen erstellt werden.
Und am Ende vielleicht eine Mitteilung welche Ordner gefehlt haben. Oder noch besser wäre es wenn man das in eine Datei schreiben könnte.
Dann hätte ich sozusagen eine Datensicherung von der Mitteilung.

Den Copy Befehl brauche ich nicht. Das kopieren muss ich manuel machen.

Vielen Dank nochmal für deine Hilfe.

Mfg tommylik
Member: emeriks
emeriks Sep 10, 2015 at 08:04:30 (UTC)
Goto Top
Aber jetzt wo ich sehe wie die Batch Datei arbeiten würde, denke ich das das etwas unpraktisch wäre.
Besser wäre es, wenn die Überprüfung in einem Rutsch durcharbeitet und die fehlende Ordner während dessen erstellt werden.
Zauberei, oder was? So oder so: Du musst schon die Ordner prüfen. Entweder nach einem Schema (ich erkenne hier keins) oder nach einer Datendatei oder eben im Script Ordner für Ordner.

Mit Log-Datei:
set LogDat=C:\Logdatei.txt

if exist D:\Projects (
echo D:\Projects bereits vorhanden >>"%LogDat%"  
) else (
echo D:\Projects nicht vorhanden >>"%LogDat%"  
mkdir D:\Projects
)

if exist D:\Projects\Siemens (
echo D:\Projects\Siemens bereits vorhanden >>"%LogDat%"  
) else (
echo D:\Projects\Siemens nicht vorhanden >>"%LogDat%"  
mkdir D:\Projects\Siemens
)

...


Das Ganze könnte man u.U. mit einer For-Schleife oder einem Call verfeinern.

E.
Member: Tommylik
Tommylik Sep 10, 2015 at 08:37:48 (UTC)
Goto Top
Hallo emeriks,

Vielen Dank für deine Hilfe. Funktioniert bestens.

Eine Sache wäre noch schön wenn die LogDatei sich öffnen würde wenn Ordner gefehlt haben.

Ansonsten vielen Dank für deine Hilfe und Mühe.

Mfg Tommylik
Member: emeriks
emeriks Sep 10, 2015 at 08:43:20 (UTC)
Goto Top
set LogDat=C:\Logdatei.txt
set ErrorTest=Nein

if exist D:\Projects (
echo D:\Projects bereits vorhanden >>"%LogDat%"  
) else (
set ErrorTest=Ja
echo D:\Projects nicht vorhanden >>"%LogDat%"  
mkdir D:\Projects
)

if exist D:\Projects\Siemens (
echo D:\Projects\Siemens bereits vorhanden >>"%LogDat%"  
) else (
set ErrorTest=Ja
echo D:\Projects\Siemens nicht vorhanden >>"%LogDat%"  
mkdir D:\Projects\Siemens
)

...

if ErrorTest==Ja notepad.exe "%LogDat"  
Member: joeklemm
joeklemm Sep 10, 2015 at 08:49:17 (UTC)
Goto Top
Hallo Tommylik,

auf Basis von emeriks Lösung hier eine Erweiterung. Voraussetzung: Deine obigen Pfade sind in einer LISTE.TXT aufgeführt nach folgendem Schema:

Projects
Projects\Siemens
Projects\Siemens\01_Werk
Projects\Siemens\02_S7
Projects\Siemens\03_SiVArc


@echo off

rem Variablen für Laufwerk, Verzeichnis und LogDatei - muss angepasst werden
set LW=C:
set VERZ=TEMP
set LOG=%LW%\%VERZ%\LOG.TXT

rem Wechsel in entsprechendes Verzeichnis und Löschen vorhandener LogDatei
cd /d %LW%\%VERZ%
if exist "%LOG%" del "%LOG%"  

rem FOR-Schleife über alle Einträge in LISTE.TXT
for /f "tokens=1" %%a in (liste.txt) do (  

rem Ordner vorhanden, dann Info
if exist %%a\NUL (
echo %%a bereits vorhanden >> "%LOG%"  

rem Ordner nicht vorhanden, dann Info und Erstellen
) else (
echo %%a nicht vorhanden - erzeugt ! >> "%LOG%"  
mkdir %%a
)
)

Gruß,
joeklemm
Member: Tommylik
Tommylik Sep 10, 2015 at 10:06:46 (UTC)
Goto Top
Hallo emeriks,

Vielen Dank für deine Hilfe.

Aber die Datei wird nicht geöffnet. Ich dachte schon es liegt an dem % was ganz unten fehlt.

Ich habe auch noch den Pfad zur Notepad.exe dazugefügt aber nichts passiert.

Verzeichnisse werden angelegt wenn sie fehlen und die Logdatei stimmt auch aber sie öffnet sich nicht.

Ich habe auch Ja und Nein mal getauscht auch dann nicht.

Vielen Dank noch mal für deine Hilfe.

Mfg Tommylik
Member: emeriks
emeriks Sep 10, 2015 at 11:11:18 (UTC)
Goto Top
Mein Fehler.
if %ErrorTest%==Ja notepad.exe "%LogDat%"   
Member: Tommylik
Tommylik Sep 12, 2015 at 02:54:07 (UTC)
Goto Top
Hallo emeriks,

Vielen Dank für deine Hilfe funktioniert gut.

Könntest du mir bitte noch sagen wie der Code geändert werden muss
wenn ich das ganze vom USB-Stick starte und ich die Logdatei auf dem Stick haben möchte.

Ich frage deswegen weil es unterschiedliche Laufwerksbuchstaben sein können.

Vielen Dank nochmal für deine Hilfe.

Mfg Tommylik
Mitglied: 114757
114757 Sep 12, 2015 updated at 06:34:04 (UTC)
Goto Top
Moin,
mit %~d0 kommst du an das Laufwerk von der aus die Batch gestartet wird.
set "LOG=%~d0\%VERZ%\LOG.TXT"  

Gruß jodel32
Member: Tommylik
Tommylik Sep 12, 2015 at 13:14:43 (UTC)
Goto Top
Hallo jodel32,

Vielen Dank auch für deine Antwort und Hilfe.

Funktioniert bestens.

Alles Gute für Euch

Mfg Tommylik
Member: emeriks
emeriks Sep 13, 2015 at 17:21:15 (UTC)
Goto Top
Na dann setze doch auf "gelöst".