Suche eine Abfrage für eine Batch-Datei
[Edit] Beitrag auf "Gelöst" gesetzt und geschlossen. Biber, 1.4.06 [/Edit]
Hallo Zusammen!
Ich suche eine Abfrage für folgenden Zweck um sie in eine Batch-Datei zu schreiben.
Ich möchte prüfen ob ein bestimmter Ordner leer ist und wenn nicht, dann dort eine bestimmte txt-datei reinkopieren.
Das läßt sich sicherlich über eine IF ... THEN Schleife realisieren. Nur wie?
Wäre dankbar für einen Tipp.
Mfg Carsten
Hallo Zusammen!
Ich suche eine Abfrage für folgenden Zweck um sie in eine Batch-Datei zu schreiben.
Ich möchte prüfen ob ein bestimmter Ordner leer ist und wenn nicht, dann dort eine bestimmte txt-datei reinkopieren.
Das läßt sich sicherlich über eine IF ... THEN Schleife realisieren. Nur wie?
Wäre dankbar für einen Tipp.
Mfg Carsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 21047
Url: https://administrator.de/contentid/21047
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo!
Hier mein Vorschlag:
dir lw:\verzeichnis /b >%temp%\dir.txt
echo ende>>%temp%\dir.txt
echo. >>%temp%\dir.txt
copy datei.txt lw:\verzeichnis\*.*
for /f "tokens=* skip=1" %%a in (%temp%\dir.txt) do (
del %temp%\dir.txt
Ist das so wie du es wolltest?
Gruß
meto
Hier mein Vorschlag:
dir lw:\verzeichnis /b >%temp%\dir.txt
- dir in eine Datei ablegen
echo ende>>%temp%\dir.txt
- in die Datei "ende" einfügen
echo. >>%temp%\dir.txt
- eine Leerzeile in die Datei einfügen
copy datei.txt lw:\verzeichnis\*.*
- die zu kopierende Datei ins Verzeichnis kopieren
for /f "tokens=* skip=1" %%a in (%temp%\dir.txt) do (
- dir.txt zeilenweise durchgehen (erste Zeile wird übersprungen)
- Überpfüfen ob "ende" in der Datei ab der zweiten Zeile vorkommt.
- Dies ist nur der Fall wenn das Verzeichnis nicht leer war.
- Wenn das Verzeihcnis nicht leeer war wird die Datei datei.txt wieder gelöscht
del %temp%\dir.txt
- temporäre Datei wieder löschen
Ist das so wie du es wolltest?
Gruß
meto
Moin Powernudel,
hatte neulich in einem anderen Thread (den ich nicht wiedergefunden habe) folgendes gepostet:
:: ----- snipp isDirLeer.bat
@echo off & setlocal
Set "testdir=d:\temp\MyDir"
if exist %testdir% rd %testdir% /s /q
md %testdir%
echo Leeres Verzeichnis wurde %testdir% angelegt..
call :ChkIfEmpty LeeresDir
:: jetzt mal irgendeine Datei dort reinstellen
echo blah>%testdir%\blubb.txt
call :ChkIfEmpty NichtLeeresDir
if exist %testdir% rd %testdir% /s /q
goto :eof
:ChkIfempty
Echo Teste ..%1
if exist %testdir% dir /b /A:-d %testdir%>nul 2>nul && @echo %testdir% ist nicht leer
goto :eof
:: ----- snapp isDirleer.bat
Die beiden entscheidenden Zeilen einer "Ist-Verzeichnis-leer"-Prüfung sind unten die beiden "If exist"-Zeilen. Der ganze Rest war nur zur Demo.
HTH Biber
hatte neulich in einem anderen Thread (den ich nicht wiedergefunden habe) folgendes gepostet:
:: ----- snipp isDirLeer.bat
@echo off & setlocal
Set "testdir=d:\temp\MyDir"
if exist %testdir% rd %testdir% /s /q
md %testdir%
echo Leeres Verzeichnis wurde %testdir% angelegt..
call :ChkIfEmpty LeeresDir
:: jetzt mal irgendeine Datei dort reinstellen
echo blah>%testdir%\blubb.txt
call :ChkIfEmpty NichtLeeresDir
if exist %testdir% rd %testdir% /s /q
goto :eof
:ChkIfempty
Echo Teste ..%1
goto :eof
:: ----- snapp isDirleer.bat
Die beiden entscheidenden Zeilen einer "Ist-Verzeichnis-leer"-Prüfung sind unten die beiden "If exist"-Zeilen. Der ganze Rest war nur zur Demo.
HTH Biber
gute idee, habe ich auch schon gemacht, schlägt nur dann fehl, wenn in dem vermeindlich leerem Ordner ein Unterordner exestiert, aber keine Datei. dir /a-d lässt ja bei der Anzeige alle Ordner weg, damit bekommt man die Verzeichniseinträge . und ... weg, dummerweise aber auch alle anderen Verzeichnisse.
Moin Steffen,
nein, Registry-Zugriffsfunktionen gibt es im native Batch-Sprachumfang nicht.
Die einfachste Variante wäre, die Reg.exe zu nutzen, die seit XP mit dabei ist (sonst im M$-ResKit war).
Dann geht analog zu oben:
Ginge auch über RegEdit.exe mit Auslesen und Schreiben einer *.reg-Datei... aber wozu?
Die Skript-Sprachen KiX und VBS/JS haben aber auch entsprechende eingebaute RegRead() und RegWrite()-Funktionen.
Gruß Biber
nein, Registry-Zugriffsfunktionen gibt es im native Batch-Sprachumfang nicht.
Die einfachste Variante wäre, die Reg.exe zu nutzen, die seit XP mit dabei ist (sonst im M$-ResKit war).
Dann geht analog zu oben:
$cmd$reg query HKCU\Software\NotExistant 1>nul 2>nul ||@echo %errorlevel%
1
-Bzw-
$cmd$reg query HKCU\Software\NotExistant 1>nul 2>nul ||@echo RegKey existiert nicht
-oder, wenn es keine automatische Weiterverarbeitung gibt-
$cmd$reg query HKCU\Software\NotExistant 1>nul
Error: The system was unable to find the specified registry key or value
Die Skript-Sprachen KiX und VBS/JS haben aber auch entsprechende eingebaute RegRead() und RegWrite()-Funktionen.
Gruß Biber