hahlrichsneu
Goto Top

Verzeichnis durchsuchen und Verknüpfungen erstellen

Per Batch ein Verzeichnis nach bestimmten Dateien durchsuchen und von den Ergebnissen Verknüpfungen erstellen

Hallo,
ich habe folgende Aufgabe.
Ich möchte per Batch einen Ordner inkl. Unterordner nach PDF Dateien durchsuchen.
Die gefundenen PDF’s sollen dann als Verknüpfung Datei .lnk in einem Zielordner abgespeichert werden.

Ich hab es jetzt schon ein paar mal versucht, hierzu eine Batch zu editieren bin aber leider nicht auf ein vernünftiges Ergebnis gekommen.
Kann mir jemand bei dieser Aufgabe helfen?
Gruß
Holger

Content-Key: 87635

Url: https://administrator.de/contentid/87635

Printed on: April 23, 2024 at 19:04 o'clock

Member: Jere
Jere May 16, 2008 at 08:36:08 (UTC)
Goto Top
wie weit bist du denn gekommen?
schreibs mal hier rein...
Member: kunert0345
kunert0345 May 17, 2008 at 22:13:08 (UTC)
Goto Top
Ich hab Rum geknobelt aber leider geht das glaube ich nicht über Batch.

Stattdessen hab ich ein Programm geschrieben das nach pdfs sucht und in einen Ordner (pdf) kopiert.
leider funktioniert es nicht wenn in unter Verzeichnissen ein Ordner oder die pdf ein Leerzeichen besitzt (tja da wünscht man sich die alten Normen und regeln wie z.b. keine Leerzeichen und alles nur 3 Buchstaben)

Das Prog:

@echo off
if not exist pdf md pdf
echo for %%%%t in ( > tmp.bat
dir /s /b *.pdf >> tmp.bat
echo ) do copy %%%%t pdf >> tmp.bat
echo del tmp.bat >> tmp.bat
tmp.bat
Member: hahlrichsneu
hahlrichsneu May 20, 2008 at 09:41:57 (UTC)
Goto Top
Hallo,
danke ersteinmal zusammen für die Antworten.
Ich hatte folgendes Batch zum erstellen der .lnk Dateien gefunden/editiert:
@echo off & setlocal

::Speicherort der Verknüpfung (unterhalb von Startmenue\Programme)
set "zielpfad=D:\Austausch\XXXXX"
::Falls das Symbol auf den Desktop soll:
::set "zielpfad=%userprofile%\Desktop"

::Name der Verknüpfung (ohne ".lnk")
set "progtitel=XXXXXXX"
::Speicherort der Programmdatei (wird auch für "Ausführen in:" verwendet)
set "progdir=C:\Programme"
set "progexe=XXXXXXXXX.exe"
::Kommentar
set "beschreibung=Erklärung eigentlich unnötig ..."

::Bei Bedarf Speicherordner der Verknüpfung erstellen (siehe oben "zielpfad"):
if not exist "%zielpfad%" md "%zielpfad%"

::temporäres VBScript erzeugen ...
echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs
echo Set objShortcut=objShell.CreateShortcut("%zielpfad%\%progtitel%.lnk")>>%temp%\MakeShortCut.vbs
echo objShortcut.TargetPath="%progdir%\%progexe%">>%temp%\MakeShortCut.vbs
echo objShortcut.Description="%beschreibung%">>%temp%\MakeShortCut.vbs
echo objShortcut.WorkingDirectory="%progdir%">>%temp%\MakeShortCut.vbs
echo objShortcut.Save>>%temp%\MakeShortCut.vbs

::... ausführen ...
cscript //nologo %temp%\MakeShortCut.vbs

::... und wieder löschen.
del %temp%\MakeShortCut.vbs


und folgendes um die Pdf's zu suchen und zentral zu kopieren:

for /r "d:\austausch\" %%i in (*.ico) do copy "%%i" "d:\austausch\test\%%~nxi"


ich bring se aber leider nicht zusammen.
Vieleicht schafft es jemand anders face-smile

Gruß
Holger
Member: Jere
Jere May 20, 2008 at 11:30:32 (UTC)
Goto Top
Hallo Holger,
ich verzweifel langsam an deinen Scripten,
kriege es nicht wie gewünscht hin.
Aber da du immer so nett bist, wollt ich dir zumindest kund tun das ich dich nicht vergessen habe.

Gruß
J
Member: hahlrichsneu
hahlrichsneu May 21, 2008 at 09:01:18 (UTC)
Goto Top
Hallo Jere,
sehr nett von Dir.
Ich möchte Dich damit aber nicht von wichtigeren Sachen abhalten face-smile

Falls ich in diesem Forum zu keiner Lösung komme, ist es halt so. Ich werd es überleben face-smile face-smile

Vielen Dank
Holger
Member: Wolfsrudel
Wolfsrudel Jan 16, 2009 at 08:10:07 (UTC)
Goto Top
Batch
FOR /F %%i IN ('DIR /B d:\austausch\*.ico') DO (  
    XCOPY %%i d:\austausch\test\%%~nxi /D /Y /Q /H /K
)

FOR /F %%a IN ('DIR /B d:\austausch\test\*.ico') DO (  
    CSRIPT create_shortcut.vbs "%userprofile%\Desktop" %%a "d:\austausch\test" %%a %%a "d:\austausch\test" //NOLOGO   
)

VB-Script "create_shortcut.vbs"
Set objShell=WScript.CreateObject("Wscript.Shell")  
Set objShortcut=objShell.CreateShortcut(wscript.arguments(0) & "\" & wscript.arguments(1) & ".lnk")  
objShortcut.TargetPath=wscript.arguments(2) & "\" & wscript.arguments(3)  
objShortcut.Description=wscript.arguments(4)
objShortcut.WorkingDirectory=wscript.arguments(2)
objShortcut.Save

Meine Lösung ;) Habe auch lange damit rumspielen müssen, aber es funktioniert.