Aus Ordnernamen sollen TXT Dateien erstellt werden
Ich suche Lösungen für:
a) TXT-Datei aus kompletten Ordnernamen erstellen
b) TXT-Datei aus den ersten 4 Zeichen des Ordnernamens erstellen
Hallo an Alle!
ich möchte gerne 1) in einem Verzeichnis für jeden vorhanden Ordnern eine namentlich gleiche TXT-Dateien erstellen!
Ich meinte hier einen Ansatz Dateinamen auslesen und neue Dateien erstellen gefunden zu haben. Aber leider funktioniert, dass mit meinen Anpassungen nicht!
Ursprünglicher Quellcode von 'bastla'
Meine 'Code' Anpassung
Leider funktioniert es nicht - es passiert gar nichts! GGGRRR
2) Benötige ich noch eine erweiterte Batch die nur aus den ersten 4 Zeichen (numerisch) des Ordnernamens jeweils eine TXT-Datei erstellt!
Beispiel für Ordner
Es wäre nett, wenn mir jemand weiter helfen könnte!
Viele Grüße und Danke im Voraus
Andychrist
a) TXT-Datei aus kompletten Ordnernamen erstellen
b) TXT-Datei aus den ersten 4 Zeichen des Ordnernamens erstellen
Hallo an Alle!
ich möchte gerne 1) in einem Verzeichnis für jeden vorhanden Ordnern eine namentlich gleiche TXT-Dateien erstellen!
Ich meinte hier einen Ansatz Dateinamen auslesen und neue Dateien erstellen gefunden zu haben. Aber leider funktioniert, dass mit meinen Anpassungen nicht!
Ursprünglicher Quellcode von 'bastla'
@echo off & setlocal
for %%i in ("C:\Ein bestimmter Ordner\*.*") do if not exist "%%~dpni.txt" echo\>"%%~dpni.txt"
Meine 'Code' Anpassung
@echo off & setlocal
set "targetdir=." & REM oder Verz. setzen z.B. set "targetdir=C:\Temp"
for %%i in ("%targetdir%\dir /b /ad") do if not exist "%%~dpni.txt" echo\>"%%~dpni.txt"
Leider funktioniert es nicht - es passiert gar nichts! GGGRRR
2) Benötige ich noch eine erweiterte Batch die nur aus den ersten 4 Zeichen (numerisch) des Ordnernamens jeweils eine TXT-Datei erstellt!
Beispiel für Ordner
....
3648 - Duschkopf chrom
3649 - Duschkopf blau
3650 - Blumenvase lila
3651 - Blumenvase grün
3652 - Abflußrohr
...
Es wäre nett, wenn mir jemand weiter helfen könnte!
Viele Grüße und Danke im Voraus
Andychrist
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 128579
Url: https://administrator.de/contentid/128579
Ausgedruckt am: 24.11.2024 um 23:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo Andychrist,
ganz hab ich nicht verstanden was du vorhast. Aber vielleicht
1) so:
und 2) so:
Grüße
rubberman
ganz hab ich nicht verstanden was du vorhast. Aber vielleicht
1) so:
@echo off &setlocal
set "targetdir=C:\Temp"
pushd "%targetdir%"
for /d %%i in (*) do echo %%i>"%~dp0\%%i.txt"
popd
@echo off &setlocal enabledelayedexpansion
set "targetdir=C:\Temp"
pushd "%targetdir%"
for /d %%i in (*) do set "x=%%i" &set "x=!x:~,4!" &echo !x!>"%~dp0\!x!.txt"
popd
rubberman
@rubberman
1) hätte ich eher so interpretiert :
2) Wenn es darum geht, die Vollständigkeit zu prüfen,würde sich eine "
Vorausgesetzt wird, dass es nur mit 4 Ziffern und einem darauffolgenden Leerzeichen beginnende Ordnernamen gibt. Die Log-Datei "Fehlende.txt" wird, wenn in Zeile 3 kein vollständiger Pfad angegeben ist, im Zielordner erstellt.
Grüße
bastla
1) hätte ich eher so interpretiert :
@echo off & setlocal
set "targetdir=C:\Temp"
pushd "%targetdir%"
for /d %%i in (*) do echo\>"%%~i.txt"
popd
2) Wenn es darum geht, die Vollständigkeit zu prüfen,würde sich eine "
for /L
"-Schleife anbieten, etwa:@echo off & setlocal enabledelayedexpansion
set "targetdir=C:\Temp"
set "Log=Fehlende.txt"
pushd "%targetdir%"
if exist "%Log%" del "%Log%"
set Low=
set High=
for /f %%i in ('dir /b /ad /on') do set High=%%i & if not defined Low set /a Low=%%i
if not defined High (echo Keine Ordner gefunden & goto :eof)
set /a Low=%Low:~,4% 2>nul || (echo Ungueltiger Ordnername %Low% & goto :eof)
if %Low%==0 (echo Ordner ohne Nummer gefunden - Pruefung kann nicht erfolgen & goto:eof)
set /a High=%High:~,4% 2>nul || (echo Ungueltiger Ordnername %High% & goto :eof)
if %High%==0 (echo Ordner ohne Nummer gefunden - Pruefung kann nicht erfolgen & goto:eof)
for /L %%i in (%Low%,1,%High%) do dir /b /ad|findstr /b /c:"%%i ">nul || >>Fehlende.txt echo %%i
popd
Grüße
bastla
Hallo Andy!
Dann sparen wir doch den Zwischenschritt über die "Fehlende.txt" auch noch ein (das Testen übernimmst ja sicher Du ):
Wie es aussieht, werden wir übrigens "
Grüße
bastla
[Edit] Sollte eigentlich über den beiden vorigen Kommentaren stehen [/Edit]
Dann sparen wir doch den Zwischenschritt über die "Fehlende.txt" auch noch ein (das Testen übernimmst ja sicher Du ):
@echo off & setlocal
set "targetdir=." & REM oder Verz. setzen z.B. set "targetdir=C:\Temp"
set "Quelle=Inventarliste.txt"
set "Erg=Fehlliste.txt"
:: fehlende Ordner ermitteln!
pushd "%targetdir%"
if exist "%Erg%" del "%Erg%"
set Low=
set High=
for /f %%i in ('dir /b /ad /on') do set High=%%i & if not defined Low set /a Low=%%i
if not defined High (echo Keine Ordner gefunden & goto :eof)
set /a Low=%Low:~,4% 2>nul || (echo Ungueltiger Ordnername %Low% & goto :eof)
if %Low%==0 (echo Ordner ohne Nummer gefunden - Pruefung kann nicht erfolgen & goto:eof)
set /a High=%High:~,4% 2>nul || (echo Ungueltiger Ordnername %High% & goto :eof)
if %High%==0 (echo Ordner ohne Nummer gefunden - Pruefung kann nicht erfolgen & goto:eof)
for /L %%i in (%Low%,1,%High%) do dir /b /ad|findstr /b /c:"%%i ">nul || (
findstr /b /c:"%%i " "%Quelle%" >nul && (findstr /b /c:"%%i " "%Quelle%" >>"%Erg%") || (echo %%i konnte in %Quelle% nicht gefunden werden)
)
popd
delayedExpansion
" nicht benötigen, daher besser weglassen ...Grüße
bastla
[Edit] Sollte eigentlich über den beiden vorigen Kommentaren stehen [/Edit]
Hallo Andy!
Allerdings wäre das im konkreten Fall eine "Oder"-Verknüpfung - eine Datei (egal welchen Typs) würde schon genügen, um als Ergebnis "nicht fehlend" zu produzieren.
Falls Du (vermutlich) eine "Und"-Verknüpfung willst, müsste in der "
(noch weniger getestet als vorhin )
Grüße
bastla
Es funktioniert alles zu meiner vollsten Zufriedenheit!
Freut mich. Wie müßte die Code-Zeile lauten, wenn ich zwei Datei-Typen gleichzeitig überprüfen müßte?
Hinsichtlich des "dir
" ginge das recht einfach:dir /b /a-d /on *.txt *.inf
Falls Du (vermutlich) eine "Und"-Verknüpfung willst, müsste in der "
for /L
"-Schleife nach beiden Typen getrennt geprüft werden, also etwa:for /L %%i in (%Low%,1,%High%) do (
dir /b /ad *.txt|findstr /b /c:"%%i ">nul || (
findstr /b /c:"%%i " "%Quelle%" >nul && (findstr /b /c:"%%i " "%Quelle%" >>"%Erg%") || (echo %%i konnte in %Quelle% nicht gefunden werden)
) && (
dir /b /ad *.inf|findstr /b /c:"%%i ">nul || (
findstr /b /c:"%%i " "%Quelle%" >nul && (findstr /b /c:"%%i " "%Quelle%" >>"%Erg%") || (echo %%i konnte in %Quelle% nicht gefunden werden)
)
)
Grüße
bastla
Hallo Andy!
Eigentlich sollte es so funktionieren:
Zu beachten wäre, dass die Quell-Datei "Inventarliste.txt" und die Ergebnisdatei nicht im Ordner mit den nummerierten Dateien liegen dürfen - daher jeweils vollständige Pfade angeben.
Grüße
bastla
Eigentlich sollte es so funktionieren:
@echo off & setlocal
set "targetdir=." & REM oder Verz. setzen z.B. set "targetdir=C:\Temp"
set "Quelle=C:\Inventarliste.txt"
set "Erg=C:\Fehlliste.txt"
:: fehlende Dateien ermitteln!
pushd "%targetdir%"
if exist "%Erg%" del "%Erg%"
set Low=
set High=
for /f %%i in ('dir /b /a-d /on *.txt *.inf') do set "High=%%i" & if not defined Low set "Low=%%i"
if not defined High (echo Keine Dateien gefunden & goto :eof)
set /a Low=%Low:~,4% 2>nul || (echo Ungueltiger Dateiname %Low% & goto :eof)
if %Low%==0 (echo Datei ohne Nummer gefunden - Pruefung kann nicht erfolgen & goto:eof)
set /a High=%High:~,4% 2>nul || (echo Ungueltiger Dateiname %High% & goto :eof)
if %High%==0 (echo Datei ohne Nummer gefunden - Pruefung kann nicht erfolgen & goto:eof)
for /L %%i in (%Low%,1,%High%) do dir /b /a-d *.txt *.inf|findstr /b /c:"%%i ">nul || (
findstr /b /c:"%%i " "%Quelle%" >nul && (findstr /b /c:"%%i " "%Quelle%" >>"%Erg%") || (echo %%i konnte in %Quelle% nicht gefunden werden)
)
popd
Grüße
bastla