Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch dir und Html Link ausgabe

Frage Entwicklung Batch & Shell

Mitglied: Pilger83

Pilger83 (Level 1) - Jetzt verbinden

24.08.2014, aktualisiert 22:42 Uhr, 1257 Aufrufe, 7 Kommentare, 2 Danke

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:

@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
Mitglied: rubberman
LÖSUNG 24.08.2014, aktualisiert 25.08.2014
Hallo Markus, willkommen im Forum.

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
01.
@if (@X)==(@Y) @end /* Hybrid Zeile, die einen JScript Kommentar einleitet 
02.
 
03.
:: Batch Part: 
04.
@echo off &setlocal 
05.
 
06.
set "htafile=Link.hta" 
07.
 
08.
>"%htafile%" echo ^<html^>^<head^>^<HTA:APPLICATION WINDOWSTATE="maximize"^>^<title^>PDF Links^</title^>^</head^>^<body^> 
09.
 
10.
set begin=^<a href=^"file:///&set middle=^"^>&set end=^</a^>^<br^> 
11.
>>"%htafile%" ( 
12.
  for /f "delims=" %%i in ('dir /a-d /b /s "*.pdf"') do ( 
13.
    set "file=%%i" 
14.
    for /f "delims=" %%j in ('cscript //e:jscript //nologo "%~f0"') do ( 
15.
      set "url=%%j" 
16.
      setlocal EnableDelayedExpansion 
17.
      echo !begin!!url!!middle!!file!!end! 
18.
      endlocal 
19.
20.
21.
22.
 
23.
>>"%htafile%" echo ^</body^>^</html^> 
24.
pause 
25.
exit /b 
26.
 
27.
:: JScript Part: */ 
28.
WScript.Stdout.WriteLine( 
29.
  encodeURI( 
30.
    WScript.CreateObject("WScript.Shell").Environment("PROCESS")("file").replace(/\\/g, "/") 
31.
32.
);
Grüße
rubberman

EDIT: Support für Dateinamen mit Ausrufezeichen ergänzt.
EDIT2: Überflüssigen Slash entfernt
Bitte warten ..
Mitglied: Pilger83
24.08.2014 um 22:41 Uhr
oh mein Gott, ich war grad dabei es mit dem Teil aus dem Tutorial zu versuchen
"Die Variante zur Erzeugung von Zahlenfolgen, FOR /L mit setlocal enabledelayedexpansion " als mein Kopf auf die Tastatur knallte.... hab ich deine Nachricht gelesen und ausprobiert.... häng jetz seit einer Woche auf arbeit und zuhause dran und nu... weiß nicht was ich sagen sollen ausser HERZLICHSTEN DANK!
Bitte warten ..
Mitglied: rubberman
24.08.2014 um 22:56 Uhr
Hallo Markus,

gern geschehen

Ich habe den Code oben noch einmal leicht verändert, um auch Dateinamen mit Ausrufezeichen vernünftig verarbeiten zu können.

Grüße
rubberman
Bitte warten ..
Mitglied: Pilger83
25.08.2014 um 11:37 Uhr
moin moin rubberman,

danke nochmal! ein Problem hab ich jetzt noch....
Umlaute bekomm ich doch mit "chcp 1252" richtiggestellt aber irgendwie klappt das nicht so richtig
der macht mir trotzdem sowas "Rüstenl" in den Link und dann funktioniert er natürlich auch nicht... leider
Bitte warten ..
Mitglied: Pilger83
25.08.2014 um 18:45 Uhr
also da mit chcp is ja auch quatsch weil die Darstellung passt ja nur er übernimmt diese nicht so via Link in den Explorer..
Versuch mit Utf-8 scheiterte auch ebenso wie die Einstellungen des Explorers zu ändern....
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Bitte warten ..
Mitglied: rubberman
LÖSUNG 25.08.2014, aktualisiert um 20:29 Uhr
Hallo Markus,

da siehst du wie kompliziert Encoding sein kann
Ich versuchs mal
  • escape statt encodeURI
  • Charset der HTA auf CP850

01.
@if (@X)==(@Y) @end /* Hybrid Zeile, die einen JScript Kommentar einleitet 
02.
 
03.
:: Batch Part: 
04.
@echo off &setlocal 
05.
 
06.
set "htafile=Link.hta" 
07.
 
08.
>"%htafile%" echo ^<html^>^<head^>^<meta charset="cp850"^>^<HTA:APPLICATION WINDOWSTATE="maximize"^>^<title^>PDF Links^</title^>^</head^>^<body^> 
09.
 
10.
set begin=^<a href=^"file:///&set middle=^"^>&set end=^</a^>^<br^> 
11.
>>"%htafile%" ( 
12.
  for /f "delims=" %%i in ('dir /a-d /b /s "C:\test\*.pdf"') do ( 
13.
    set "file=%%i" 
14.
    for /f "delims=" %%j in ('cscript //e:jscript //nologo "%~f0"') do ( 
15.
      set "url=%%j" 
16.
      setlocal EnableDelayedExpansion 
17.
      echo !begin!!url!!middle!!file!!end! 
18.
      endlocal 
19.
20.
21.
22.
 
23.
>>"%htafile%" echo ^</body^>^</html^> 
24.
pause 
25.
exit /b 
26.
 
27.
:: JScript Part: */ 
28.
WScript.Stdout.WriteLine( 
29.
  escape( 
30.
    WScript.CreateObject("WScript.Shell").Environment("PROCESS")("file").replace(/\\/g, "/") 
31.
32.
);
Das sollte theoretisch den gewünschten Effekt erzielen ...

Grüße
rubberman
Bitte warten ..
Mitglied: Pilger83
25.08.2014 um 20:34 Uhr
ohje definitiv unterschätzt!! rubber, fühl dich ganz herzlich gedrückt! besten Dank!
funktioniert exzellente
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
HTML in Batch und Powershell (11)

Frage von michi-ffm zum Thema Batch & Shell ...

Batch & Shell
gelöst Erneute Frage: Powershell in Batch mit Html (6)

Frage von michi-ffm zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch ausgabe zeilenweise stat spaltenweise ausgeben (4)

Frage von sugram zum Thema Batch & Shell ...

Batch & Shell
gelöst Echo Ausgabe ohne Variablenauflösung (9)

Frage von bartek76 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(3)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Heiß diskutierte Inhalte
Netzwerke
Mobile Einwahl IPSec VPN von iPhone iPad T-Mobile zur Pfsense (13)

Frage von Spitzbube zum Thema Netzwerke ...

LAN, WAN, Wireless
Eine Netzwerkdose im Wechsel für zwei unterschiedliche Netze (12)

Frage von kartoffelesser zum Thema LAN, WAN, Wireless ...

Voice over IP
SNOM D765 an LancomR883VAW (10)

Frage von MS6800 zum Thema Voice over IP ...

Windows Netzwerk
Ordner-Freigabe außerhalb der Domäne (9)

Frage von Remsboys zum Thema Windows Netzwerk ...