117553
Aug 24, 2014, updated at 20:42:26 (UTC)
3189
7
0
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 247326
Url: https://administrator.de/contentid/247326
Printed on: April 19, 2024 at 22:04 o'clock
7 Comments
Latest comment
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