
117553
24.08.2014, aktualisiert um 22:42:26 Uhr
Batch dir und Html Link ausgabe
Hallo zusammen,
folgendes Problem, ich möchte eine Batch mit folgender function
dir Ordner plus Unterordner durchsuchen ausgabe ohne Kopfzeile.... klar dir /b /s
einzelnes Ergebniss in Variable speichern ausgabe html datei mit links zu den einzelnen dateien (nur PDF) *.pdf
Also dachte in etwa so:
hab die Suche wirklich benutzt und lange probiert nur steig leider nicht dahinter...
mfg Markus
folgendes Problem, ich möchte eine Batch mit folgender function
dir Ordner plus Unterordner durchsuchen ausgabe ohne Kopfzeile.... klar dir /b /s
einzelnes Ergebniss in Variable speichern ausgabe html datei mit links zu den einzelnen dateien (nur PDF) *.pdf
Also dachte in etwa so:
@echo off
for /f %%i (' dir "C:\test\*.pdf" /b /s ') do set verz=%%i
echo ^<a href=" %verz% ^</a^> >>Link.html
:eof
hab die Suche wirklich benutzt und lange probiert nur steig leider nicht dahinter...
mfg Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 247326
Url: https://administrator.de/forum/batch-dir-und-html-link-ausgabe-247326.html
Ausgedruckt am: 22.04.2025 um 13:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo Markus, willkommen im Forum.
Da kommen gleich mehrere Probleme zusammen.
Um diese Probleme zu lösen könntest du eine kombinierte Datei aus Batch und JScript schreiben (um die encodeURI Funktion nutzen zu können), sowie statt der HTML eine HTA Datei kreieren.
*.bat
Grüße
rubberman
EDIT: Support für Dateinamen mit Ausrufezeichen ergänzt.
EDIT2: Überflüssigen Slash entfernt
Da kommen gleich mehrere Probleme zusammen.
- Für lokale Pfade brauchst du eine File-URL
- Backslashes sind in URLs Slashes
- In URLs sind nur bestimmte Zeichen erlaubt. Zeichen (wie bspw. Leerzeichen) müssen kodiert werden
- Dein Browser wird vermutlich nicht auf lokale Dateien zugreifen dürfen
Um diese Probleme zu lösen könntest du eine kombinierte Datei aus Batch und JScript schreiben (um die encodeURI Funktion nutzen zu können), sowie statt der HTML eine HTA Datei kreieren.
*.bat
@if (@X)==(@Y) @end /* Hybrid Zeile, die einen JScript Kommentar einleitet
:: Batch Part:
@echo off &setlocal
set "htafile=Link.hta"
>"%htafile%" echo ^<html^>^<head^>^<HTA:APPLICATION WINDOWSTATE="maximize"^>^<title^>PDF Links^</title^>^</head^>^<body^>
set begin=^<a href=^"file:///&set middle=^"^>&set end=^</a^>^<br^>
>>"%htafile%" (
for /f "delims=" %%i in ('dir /a-d /b /s "*.pdf"') do (
set "file=%%i"
for /f "delims=" %%j in ('cscript //e:jscript //nologo "%~f0"') do (
set "url=%%j"
setlocal EnableDelayedExpansion
echo !begin!!url!!middle!!file!!end!
endlocal
)
)
)
>>"%htafile%" echo ^</body^>^</html^>
pause
exit /b
:: JScript Part: */
WScript.Stdout.WriteLine(
encodeURI(
WScript.CreateObject("WScript.Shell").Environment("PROCESS")("file").replace(/\\/g, "/")
)
);
Grüße
rubberman
EDIT: Support für Dateinamen mit Ausrufezeichen ergänzt.
EDIT2: Überflüssigen Slash entfernt
Hallo Markus,
da siehst du wie kompliziert Encoding sein kann
Ich versuchs mal
Das sollte theoretisch den gewünschten Effekt erzielen ...
Grüße
rubberman
da siehst du wie kompliziert Encoding sein kann
Ich versuchs mal
- escape statt encodeURI
- Charset der HTA auf CP850
@if (@X)==(@Y) @end /* Hybrid Zeile, die einen JScript Kommentar einleitet
:: Batch Part:
@echo off &setlocal
set "htafile=Link.hta"
>"%htafile%" echo ^<html^>^<head^>^<meta charset="cp850"^>^<HTA:APPLICATION WINDOWSTATE="maximize"^>^<title^>PDF Links^</title^>^</head^>^<body^>
set begin=^<a href=^"file:///&set middle=^"^>&set end=^</a^>^<br^>
>>"%htafile%" (
for /f "delims=" %%i in ('dir /a-d /b /s "C:\test\*.pdf"') do (
set "file=%%i"
for /f "delims=" %%j in ('cscript //e:jscript //nologo "%~f0"') do (
set "url=%%j"
setlocal EnableDelayedExpansion
echo !begin!!url!!middle!!file!!end!
endlocal
)
)
)
>>"%htafile%" echo ^</body^>^</html^>
pause
exit /b
:: JScript Part: */
WScript.Stdout.WriteLine(
escape(
WScript.CreateObject("WScript.Shell").Environment("PROCESS")("file").replace(/\\/g, "/")
)
);
Grüße
rubberman