Top-Themen

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 Ziel einer Verknüpfung und Erweiterung einer Datei per Batch auslesen

Mitglied: evinben

evinben (Level 2) - Jetzt verbinden

10.03.2012, aktualisiert 12.03.2012, 8825 Aufrufe, 9 Kommentare

Hallo alle miteinander!

ich war verwundert, dass dazu keine Lösungen zu finden sind.

1. Wie kann das Ziel einer Verknüpfung ausgelesen werden? Wenn es nur über VB-Skript gehen sollte, wie könnte der ermittelte Wert in der Batch weiterverarbeitet werden? Es geht darum Dateien, die über Verknüpfungen in einem Ordner zu erreichen sind, zu verwalten (verschieben, kopieren), um sowohl Redundanz auf dem Datenträger zu vermeiden als auch ein Asynchronlauf der Dateien nicht zu vernachlässigen (Doppelgänger - neu/alt - vermeiden).

2. Wie schaft ihr die Erweiterung einer Datei auszulesen?
Lösungen wie %var:~0,-4% geht schlecht, da die Anzahl der Buchstaben aller möglichen Erweiterungstypen nicht fest definiert ist.
Das Relevante, das mir bekannt ist, wäre %~x0 für die aktuelle Datei und mit %~x1 für das übergebene Argument. Könnte es eventuell mit "|" (Pipe) oder ähnlichen Tricks klappen?

Vielen Dank für eure Tipps!
evinben
Mitglied: bastla
10.03.2012 um 20:58 Uhr
Hallo evinben!

Der Weg führt tatsächlich über VBS - etwa:
01.
@echo off & setlocal 
02.
set "Lnk=%userprofile%\Desktop\VHD.lnk" 
03.
 
04.
set "G=%temp%\GetTargetPath.vbs" 
05.
>%G% echo WScript.Echo CreateObject("WScript.Shell").CreateShortcut(WScript.Arguments(0)).TargetPath 
06.
 
07.
for /f "delims=" %%i in ('cscript //nologo %G% "%Lnk%"') do set "TargetPath=%%i" & set "TargetType=%%~xi"
Grüße
bastla
Bitte warten ..
Mitglied: evinben
12.03.2012 um 10:32 Uhr
gruß bastla!

wow, das ist ja kompliziert... Ich hätte mir es leichter vorgestellt.
Es funktioniert und ich danke dir hierfür!

Und um den Namen der Verknüpfung im Bezug auf eine bestimmten Datei zu generieren, die in dem selben Ordner vorliegt, wäre es:
01.
:Name für die Verknüpfung generieren: die Bezugsdatei finden, ihre Dateierweiterung filtern und nur ihren Namen in der  Variable setzen. 
02.
for /f "delims=" %%d in ('dir  /b ^| findstr /C:"%File%"') do set LinkName=%%~nd 
Kapiert ;)

Großartig. DANKE BASTLA!!! Ich würde grene bei dir Praktikum machen.


gruß
evinben
Bitte warten ..
Mitglied: evinben
13.03.2012 um 16:39 Uhr
Hallo Bastla,

ich habe nach einem langen Rätsel festgestellt, dass das Skript die Umlauten im Zielpfad zwar schön in der Eingabeaufforderung anzeigt aber diese werden in der temporär ausgegebenen txt-Datei konvertiert. Z. B. von "C:\Probe mit Umlauten.ÄÖÜßäöü.txt" wird:
01.
C:\Probe mit Umlauten. Ž™šá„”.txt
Ich habe versucht das konvertierte Zeichne für "ü" duch "ü" zu ersetzen und es hat mit set var=%var:=ü% nicht funkioniert
Gibt es dafür eine Abhilfe?

Ich schildere mal kurz das Vorhaben/die Fragestellung konkret:
- In einem Ordner befinden sich Verknüpfungen mit Umlauten.
- Mit einer Batch-Datei soll die Zieldatei einer Verknüpfung kopiert und/oder verschoben werden. In dem Pfad zu der Zieldatei sind Umlauten vorhanden.
- Wie kann der Zielpfad in einer Variable gesetzt werden (um die Zieldateie verschieben bzw. kopieren zu können)?


Die letzte Beispielzeile von mir war doch eine schlechte Methode, da findstr im Zusammenhang mit dem Schalter /C: aber auch mit dem /X nicht mit Umlauten zurecht kommt.
Diese Zeile hier leistet dagegen Wunder:

01.
:Dateinamen einer Datei, die im aktuellen Verzeichnis sich befindet, in eine Variable setzen (Erweiterung weglassen)  
02.
for /f "delims=" %%d in ('dir /b "%File%"') do set LinkName=%%~nd
gruß
evinben


Edit: alle Umlaute werden in der txt-Datei konvertiert ausgegeben
Bitte warten ..
Mitglied: bastla
13.03.2012 um 17:27 Uhr
Hallo evinben!

Ein
chcp 1252 >nul
im Batch vorweg hast Du schon versucht?

Grüße
bastla
Bitte warten ..
Mitglied: evinben
13.03.2012 um 18:30 Uhr
ja Bastla,

bei mir steht das Alles nun als Standard in jeder neuen Bach-Datei und wenn jemandem meine Bach-Vorlage weiter hilft, gebe ich sie hier weiter:
01.
Windows Registry Editor Version 5.00 
02.
[HKEY_CLASSES_ROOT\.bat\ShellNew] 
03.
:Mit "0D0A" wird ein Zeilenumbruch erzeugt. Diese Zahlen sind nicht in rechtem sondern in linkem Bereich während der Berbeitung von REG_BINARY eizungeben. 
04.
:Folgender Eintrag wird in der Vorlage erzeugt: 
05.
06.
07.
:@echo off 
08.
:setlocal enabledelayedexpansion 
09.
:@prompt -$G 
10.
:chcp 1252 >nul 
11.
:PushD %~dp0 
12.
:echo. 
13.
14.
15.
16.
17.
:pause >nul 
18.
19.
"Data"=hex:0d,0a,0d,0a,40,65,63,68,6f,20,6f,66,66,0d,0a,3a,73,65,74,6c,6f,63,\ 
20.
  61,6c,20,65,6e,61,62,6c,65,64,65,6c,61,79,65,64,65,78,70,61,6e,73,69,6f,6e,\ 
21.
  0d,0a,40,70,72,6f,6d,70,74,20,2d,24,47,0d,0a,63,68,63,70,20,31,32,35,32,20,\ 
22.
  3e,6e,75,6c,0d,0a,3a,50,75,73,68,44,20,25,7e,64,70,30,0d,0a,65,63,68,6f,2e,\ 
23.
  0d,0a,0d,0a,0d,0a,0d,0a,0d,0a,0d,0a,70,61,75,73,65,20,3e,6e,75,6c,0d,0a
Als .reg abspeichern > ausführen und in dem Kontextmenü Neu den neuen Eintrag Windows-Batchdatei aufrufen.

Gruß
evinben
Bitte warten ..
Mitglied: evinben
14.03.2012 um 10:19 Uhr
Einen schönen Mittwoch an alle!

ich habe sehr intensiv weiter experimentiert und bin zu dum folgenden Schluss gekommen, dass mit der Variante set var=%var:ü% nur zwei Umlauten sich ersetzen lassen - Ä und Ö - und leider keine andere.

01.
:Ziel der Verknüpfung erfahren 
02.
:~~~~~~~~~~~~~~~~~~~~~~~~~ 
03.
 
04.
:@echo off 
05.
setlocal enabledelayedexpansion  
06.
setlocal 
07.
@prompt -$G 
08.
chcp 1252 >nul 
09.
 
10.
PushD %~dp0 
11.
 
12.
:Ziel der Verknüpfung erfahren, um die entsprechende Datei zu kopieren 
13.
set "LinkFile=Probe mit Umlauten.ÄÖÜäöüß.txt.lnk"  
14.
set "TempVBSkriptFile=%temp%\GetTargetPath.vbs"  
15.
>%TempVBSkriptFile% echo WScript.Echo CreateObject("WScript.Shell").CreateShortcut(WScript.Arguments(0)).TargetPath  
16.
for /f "delims=" %%i in ('cscript //nologo "%TempVBSkriptFile%" "%LinkFile%"') do set File=%%~nxi& set FileDirectory=%%~dpi& set TargetPath=%%~i 
17.
set FilePath=%TargetPath% 
18.
echo Datei:		"%File%" 
19.
echo Verzeichnis:	"%FileDirectory%" 
20.
echo Pfad:		"%FilePath%" 
21.
 
22.
echo. 
23.
:Nur diese beiden Umlauten lassen sich erfolgreich ersetzen 
24.
set FilePath=%FilePath:Ž=Ä% 
25.
set FilePath=%FilePath:™=Ö% 
26.
 
27.
echo %FilePath% 
28.
 
29.
echo. 
30.
:Diese Zeichen lassen sich auf derselben Weise leider nicht ersetzen 
31.
set FilePath=%FilePath=„:ä% 
32.
set FilePath=%FilePath=:ü% 
33.
set FilePath=%FilePath=”:ö% 
34.
set FilePath=%FilePath=á:ß% 
35.
set FilePath=%FilePath=š:Ü% 
36.
 
37.
 
38.
echo %FilePath%>tmp.txt 
39.
pause >nul
Wie schafft ihr es? Gibt es eventuell andere Codepages, die ausprobiert werden sollten?
Wenn das Ersetzen der Umlauten im Batch nicht möglich wäre, gibt es hierfür alternativ eine VBS-Lösung?

Für jede Tipps/Anregungen/Vorschläge wäre ich dankbar.

bis bald
evinben
Bitte warten ..
Mitglied: bastla
14.03.2012 um 14:50 Uhr
Hallo evinben!

Und wenn Du versuchsweise in den noch nicht funktionierenden Zeilen 31 bis 35 "=" und ":" in die richtige Reihenfolge bringst?

Aber im Ernst: Was soll denn in weiterer Folgen noch mit dem Pfad passieren? Wenn er ohnehin wieder ANSI-codiert benötigt wird, kannst Du ihn ja so lassen, wie er ist ...

Grüße
bastla
Bitte warten ..
Mitglied: evinben
14.03.2012 um 16:03 Uhr
Danke Bastla,

ja das war es, danke . Nun werden alle Umlauten ersetzt.

Aber im Ernst: Was soll denn in weiterer Folgen noch mit dem Pfad passieren? Wenn er ohnehin wieder ANSI-codiert benötigt wird, kannst Du ihn ja so lassen, wie er ist ...

Das macht mir nun Stress und macht mich zugleich neugierig. Was mache ich nun wieder Falsch? In meinem Fall klappt es ohne zusätzlichen Nachbearbeitung der Umlauten definitiv nicht - schau:
01.
type "%FilePath%" 
02.
copy "%FilePath%" "%systemDrive%\Windows"
Die Antwort lautet darauf 2x: Das System kann den angegebenen Pfad nicht finden.

Danke sehr, für die Fehlerkorrektur

"Setzen, Note 6!"


Gruß
evinben
Bitte warten ..
Mitglied: evinben
14.03.2012 um 19:48 Uhr
Hallo Bastla,

nur Bescheid geben: mit CALL werden nun alle Umlaute-Zeichen ersetzt und anschließend der Pfad in eine Variable gesetzt. Ab dann laufen die Befehle wie **copy* wieder.

Also das Problem ist somit gelöst.

Vielen Dank noch mal für die intensive Unterstützung!


gruß
evinben
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Verknüpfung mittels Batch erstellen - Punkt in Ziel, Ziel ist ein Ordner

gelöst Frage von moses-southBatch & Shell5 Kommentare

Hallo Zusammen Ich habe folgendes Problem: Bei uns auf dem Fileserver wird für jedes Projekt, ein eigener Ordner mit ...

Windows Server

Blinde Programmicons auf Verknüpfungen mit Zielen in Netzwerkpfaden

Frage von departure69Windows Server6 Kommentare

Hallo. Seit dem W2K12-Server (ohne "R2") fällt mir auf, daß manche Programmverknüpfungen, die zu Zielen in Netzwerkpfaden führen, nur ...

Batch & Shell

BATCH ini Datei Datei auslesen

gelöst Frage von Juergen42Batch & Shell2 Kommentare

Hallo zusammen, ich möchte eine ini Datei auslesen mit folgenden Aufbau INHALT DER INI ID=30 NAME="test1" PFAD="K:\Kontoauszug\Test1\*.pdf" PFAD_S="K:\Kontoauszug\Test1\Sicherung\" ID=28 ...

Batch & Shell

Batch File zum Auslesen einer Datei

gelöst Frage von Marcel1989Batch & Shell9 Kommentare

Hallo, Ich scheibe momentan ein Anmeldescript als batch mit dem Aufruf von VBS dateien. Hierfür haben wir bereits gruppen ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 2 TagenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 3 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 3 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 3 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement19 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Netzwerkgrundlagen
VLAN - Offene Fragen
Frage von KnettenbrechNetzwerkgrundlagen17 Kommentare

Hallo zusammen, ich befasse mich derzeit mit dem Thema VLAN. Hierzu habe ich schon einige Guides gelesen, einschließlich des ...

Google Android
Empfehlung: Android Ortungsapp
gelöst Frage von certifiedit.netGoogle Android13 Kommentare

Guten Morgen, grundsätzlich vorweg, ich wollte mich eben schlau machen, bzgl einer Ortungsapp, welche Androidbasiert einem anderen Androidsmartphone mitteilt, ...

Router & Routing
VPN hinter zweiter Fritzbox nutzen im Nachbarhaus
gelöst Frage von georg2204Router & Routing11 Kommentare

Hallo zusammen, ich blicke hier leider nicht mehr so ganz durch. In Haus 1 steht eine Fritzbox 7390, diese ...