DATINFO.BAT Liest Kurzname, Erweiterung, Größe, Datum, Uhrzeit, Pfad und Vollname einer Datei aus. A] Benötigt wird dazu noch im selben Verzeichnis die Hilfs-Datei 'kn_umbr1.bat', bestehend aus der einzigen Zeile: 'Hole ' - Ohne Anführungszeichen und mit Leerzeichen, aber ohne Zeilenumbruch am Ende! Dieser entsteht u. U. automatisch und muß anschließend im Texteditor entfernt werden, damit der Befehl '>>' den nächsten Ausdruck dahinter und nicht darunter setzt. B] Benötigt wird dazu noch im selben Verzeichnis die Hilfs-Datei 'kn_umbr2.bat', diesmal bestehend aus der einzigen Zeile: 'Hole "' - Wie 'kn_umbr1.bat' ebenfalls ohne Zeilenumbruch am Ende. Wie beschrieben in [ http://www.erleuchtet.gmxhome.de/hilfe/dosmini2.htm ] VORGEHEN: Den nächsten Bereich bis "exit" kopieren und als DATINFO.BAT zusammen mit den Dateien KN_UMBR1.BAT und KN_UMBR2.BAT ZUSAMMEN in ein Verzeichnis legen, eine Verknüpfung zur DATINFO.BAT z.B. auf den Desktop ablegen und die zu untersuchende Datei darauf ziehen. Das ERGEBNIS liegt dann mit zugehörigem Namen im Ordner der zu untersuchenden Datei. [siehe unten] ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ @echo off REM Datei-Info REM Auch wenn die Ausgabe manchmal unter Speichermangel leidet, REM Die Variablen müßten geholt werden REM Insbesondere wenn man sich auf das gewünschte Beschränkt und REM EVTL. die Batchdatei in einzelne CALL- Bereiche aufteilt REM ------------- REM Alle KN_UMBR1.BAT und KN_UMBR2.BAT: Evtl. mit Pfadangabe! REM Gewünschte Datei in Windows auf eine !VERKNÜPFUNG! hierzu ziehen! REM ------------- ECHO HALLO Echo. echo Var 0: echo %0 echo Var 1: echo %1 ECHO Datei-Pfad pruefen IF exist %1 GOTO LOS ECHO Die Datei "%1" wurde nicht gefunden ECHO. ECHO GGF. Datei auf Verknuepfung ziehen ECHO Verarbeitung wird abgebrochen PAUSE GOTO WEG :LOS REM BATCH-Info ECHO. ECHO LOS REM Alternativ REM Echo. > AUSGABE1.txt REM Zur Absicherung: DATE > AUSGABE1.txt REM ZU Dateinamen echo. echo. Ausfuehrende Batch-Datei: echo. echo %0 echo. echo. Ausfuehrende Batch-Datei: >> AUSGABE1.txt echo. >> AUSGABE1.txt echo %0 >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. Pfad der Batch-Datei: TRUENAME CD echo. echo. Pfad der Batch-Datei: >> AUSGABE1.txt TRUENAME >> AUSGABE1.txt CD >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. ------------- >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. echo. Untersuchte Datei: echo. echo %1 echo. echo. >> AUSGABE1.txt echo. Untersuchte Datei: >> AUSGABE1.txt echo. >> AUSGABE1.txt echo %1 >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt rem the next line changes to the directory of the argument CD %1\.. ECHO. Pfad der untersuchten Datei: TRUENAME CD echo.!2X REM Der Pfad der Zu Untersuchenden Datei ist bekannt REM MS-DOS hat ihn aber noch nicht als Variable gespeichert REM Und kann deshalb nicht hineinschreiben PAUSE cls REM ------------- ECHO. REM Zwischen Arbeits- und Datei-Verzeichnis wechseln GOTO SKIP1 REM BLOCK 1 REM Aktuelles Datum holen kurz - EVTL für Dateinamen CD %0\.. type kn_umbr1.bat > ZW.bat REM Absoluter Pfad? IF not exist kn_umbr1.bat GOTO NO Date >> ZW.bat echo set AKTDATUM=%%4> HOLE.bat call ZW.bat echo %AKTDATUM% echo. >> AUSGABE1.txt echo AKTDATUM: >> AUSGABE1.txt echo %AKTDATUM% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. REM set AKTDATUM= :SKIP1 REM BLOCK 2 REM Dateiverzeichnis holen kurz - WICHTIG für Pfadangaben REM Und hier kommt ein besonderer Trick ins Spiel: REM SChräg! Geht wegen 8.3. Auf Anschluß-Leerzeichen achten! CD %0\.. type kn_umbr1.bat > %1ZW.BAT REM Absoluter Pfad? CD %1\.. TRUENAME >> %1ZW.BAT | sort /R echo set PFADKURZ=%%1\> HOLE.bat call %1ZW.BAT CD %0\.. echo %PFADKURZ% echo PFADKURZ: >> AUSGABE1.txt echo %PFADKURZ% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. REM set PFADKURZ= REM BLOCK 3 REM Dateiverzeichnis holen lang REM Und hier kommt ein besonderer Trick ins Spiel: REM SChräg! Geht wegen 8.3. Auf Anschluß-Leerzeichen achten! CD %0\.. type kn_umbr2.bat > %1ZW.BAT REM Absoluter Pfad? IF not exist kn_umbr2.bat GOTO NO CD %1\.. CD >> %1ZW.BAT echo set PFADLANG=%%1\"> HOLE.bat call %1ZW.BAT CD %0\.. echo %PFADLANG% echo PFADLANG: >> AUSGABE1.txt echo %PFADLANG% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. set PFADLANG= REM BLOCK 4 REM Dateinamen holen lang REM Und hier kommt ein besonderer Trick ins Spiel: REM SChräg! Geht wegen 8.3. Auf Anschluß-Leerzeichen achten! CD %0\.. type kn_umbr2.bat > %1ZW.BAT REM Absoluter Pfad? CD %1\.. dir /b %1 >> %1ZW.BAT echo set NAMELANG=%%1"> HOLE.bat call %1ZW.BAT CD %0\.. echo %NAMELANG% echo NAMELANG: >> AUSGABE1.txt echo %NAMELANG% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. set NAMELANG= REM BLOCK 5 REM Dateinamen holen mit Pfad lang 2 ECHO SCHWIERIG ECHO. ECHO dir /s /b %1 ECHO. REM Geht evtl auch so... echo %NAMEGANZ% echo NAMEGANZ direkt: >> AUSGABE1.txt echo inkl. Unterordner >> AUSGABE1.txt dir /s /b %1 >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. REM Und hier kommt ein besonderer Trick ins Spiel: REM SChräg! Geht wegen 8.3. Auf Anschluß-Leerzeichen achten! CD %0\.. type kn_umbr2.bat > %1ZW.BAT REM Absoluter Pfad? CD %1\.. dir /s /b %1 >> %1ZW.BAT echo set NAMEGANZ=%%1"> HOLE.bat call %1ZW.BAT CD %0\.. echo %NAMEGANZ% echo NAMEGANZ lang: >> AUSGABE1.txt echo %NAMEGANZ% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. set NAMEGANZ= REM BLOCK 6 REM Dateinamen holen mit Pfad kurz REM Und hier kommt ein besonderer Trick ins Spiel: REM SChräg! Geht wegen 8.3. Auf Anschluß-Leerzeichen achten! CD %0\.. type kn_umbr1.bat > %1ZW.BAT REM Absoluter Pfad? CD %1\.. echo %1 >> %1ZW.BAT echo set NAMEGNZK=%%1> HOLE.bat call %1ZW.BAT CD %0\.. echo %NAMEGNZK% echo NAMEGNZK kurz: >> AUSGABE1.txt echo %NAMEGNZK% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. set NAMEGNZK= PAUSE REM BLOCK 7 REM Datei-Infos einzeln holen REM Und hier kommt ein besonderer Trick ins Spiel: REM SChräg! Geht wegen 8.3. Auf Anschluß-Leerzeichen achten! CD %0\.. type kn_umbr1.bat > %1ZW.BAT REM Absoluter Pfad? CD %1\.. dir %1 | find ":" | find "Datentr„ger" /V | find "Verzeichnis von" /V >name.txt >> %1ZW.BAT echo set NAMEKURZ=%%1> HOLE.bat call %1ZW.BAT CD %0\.. echo %NAMEKURZ% echo NAMEKURZ: >> AUSGABE1.txt echo %NAMEKURZ% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. set NAMEKURZ= echo set ERWKURZ=%%2> HOLE.bat call %1ZW.BAT CD %0\.. echo %ERWKURZ% echo ERWKURZ: >> AUSGABE1.txt echo %ERWKURZ% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. set ERWKURZ= echo set GROESSED=%%3> HOLE.bat call %1ZW.BAT CD %0\.. echo %GROESSED% echo GROESSED: >> AUSGABE1.txt echo %GROESSED% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. set GROESSED= echo set DATUMD=%%4> HOLE.bat call %1ZW.BAT CD %0\.. echo %DATUMD% echo DATUMD: >> AUSGABE1.txt echo %DATUMD% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. set DATUMD= echo set UHRZEITD=%%5> HOLE.bat call %1ZW.BAT CD %0\.. echo %UHRZEITD% echo UHRZEITD: >> AUSGABE1.txt echo %UHRZEITD% >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. >> AUSGABE1.txt echo. set UHRZEITD= REM Mehr sind nicht sinnvoll REM DAS WAR'S Bis jetzt REM Ausgabe verschieben: ECHO Datei-Info wird erstellt im Datei-Verzeichnis: ECHO. move AUSGABE1.txt %1-INFO.txt PAUSE GOTO END REM ------------- REM ABSCHLUSS :MELDUNG ECHO %1 hat eine Leerstelle GOTO END :NO ECHO. ECHO Die Datei KN_UMBR*.BAT wurde im angegebenen Pfad nicht gefunden ECHO. ECHO GGf. Absolute Pfade angeben ECHO Verarbeitung wird abgebrochen PAUSE :WEG REM Bereinigung von temporären Dateien: DEL %1ZW.BAT DEL ZW.BAT DEL AUSGABE1.txt DEL HOLE.bat rem the next line changes back to the directory of the batch CD %0\.. DEL ZW.BAT DEL AUSGABE1.txt DEL HOLE.bat CD %1\.. DEL ZW.BAT DEL AUSGABE1.txt DEL HOLE.bat CD C:\WINDOWS DEL ZW.BAT DEL AUSGABE1.txt DEL HOLE.bat REM ------------- :END echo Datei: "%1" REM Auflösen der Variablen: set AKTDATUM= set PFADKURZ= set PFADLANG= set NAMELANG= set NAMEGANZ= set NAMEGNZK= set NAMEKURZ= set ERWKURZ= set GROESSED= set DATUMD= set UHRZEITD= ECHO. ECHO ENDE PAUSE DEL ZW.BAT DEL %1ZW.BAT DEL HOLE.bat rem the next line changes back to the directory of the batch CD %0\.. DEL ZW.BAT DEL HOLE.bat rem the next line changes to the directory of the argument CD %1\.. DEL ZW.BAT DEL HOLE.bat cls exit ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Das Ergebnis von DATINFO.BAT [ Beispielsweise ] Folgende Variablen wurden in MS-DOS eingelesen und wieder ausgegeben: ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Aktuelles Datum: Sa, 22.01.2011 Neues Datum (TT.MM.JJ): Ausfuehrende Batch-Datei: C:\DOS-BA~1\DOS_VE~1\DATINFO.BAT Pfad der Batch-Datei: C:\DOS-BA~1\DOS_VE~1 C:\DOS-Batch\DOS_Verzeichnis ------------- Untersuchte Datei: C:\DOS-BA~1\DOS_VE~1\NEUER_~1\NEUERO~1\FOTO_1~1.JPG PFADKURZ: C:\DOS-BA~1\DOS_VE~1\NEUER_~1\NEUERO~1\ PFADLANG: "C:\DOS-Batch\DOS_Verzeichnis\Neuer_Ordner\Neuer Ord ner TEST\" NAMELANG: "foto_11.01.2011.jpg" NAMEGANZ direkt: inkl. Unterordner C:\DOS-Batch\DOS_Verzeichnis\Neuer_Ordner\Neuer Ord ner TEST\foto_11.01.2011.jpg C:\DOS-Batch\DOS_Verzeichnis\Neuer_Ordner\Neuer Ord ner TEST\UnterOrdner 2\foto_11.01.2011.jpg NAMEGANZ lang: "C:\DOS-Batch\DOS_Verzeichnis\Neuer_Ordner\Neuer Ord ner TEST\foto_11.01.2011.jpg" NAMEGNZK kurz: C:\DOS-BA~1\DOS_VE~1\NEUER_~1\NEUERO~1\FOTO_1~1.JPG NAMEKURZ: FOTO_1~1 ERWKURZ: JPG GROESSED: 3003 DATUMD: 11.01.11 UHRZEITD: 22:22 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Hinrichs 2009/11