Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 1175 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...

Mit freundlichen Grüßen 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung!

(2)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch (Win7): Kombinierte Ausgabe mit echo? (1)

Frage von Ben.Blake.79 zum Thema Batch & Shell ...

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

Frage von sugram zum Thema Batch & Shell ...

Windows Netzwerk
Batch, Link verteilen (3)

Frage von Andreas-sca zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...