Dir auf Netzwerkpfad
Hi,
wir wollte mir mit einem batch mit "dir-Befehl" die Verzeichnisse eines Netzwerkpfades in eine Datei leiten. Habe einfach meine Win7 CMD in das Netzwerk kopiert wo der batch liegt. Das einfachste klappt natürlich nie:
Cmd.exe unterstützt UNC-Namen für das aktuelle Verzeichnis nicht
Gibt es da eine Alternative? An irgendwelchen Serverkonfigurationen oder ähnliches werde ich nichts ändern können.
Vielen Dank & Gruß
wir wollte mir mit einem batch mit "dir-Befehl" die Verzeichnisse eines Netzwerkpfades in eine Datei leiten. Habe einfach meine Win7 CMD in das Netzwerk kopiert wo der batch liegt. Das einfachste klappt natürlich nie:
Cmd.exe unterstützt UNC-Namen für das aktuelle Verzeichnis nicht
Gibt es da eine Alternative? An irgendwelchen Serverkonfigurationen oder ähnliches werde ich nichts ändern können.
Vielen Dank & Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 293009
Url: https://administrator.de/contentid/293009
Ausgedruckt am: 16.11.2024 um 05:11 Uhr
8 Kommentare
Neuester Kommentar
Als Netzlaufwerk mappen ;-P
Oder auch mit robocopy im Demo-Modus (/L)
Gruß grexit
Oder auch mit robocopy im Demo-Modus (/L)
Gruß grexit
Hallo,
wie rubberman schon schrieb: CMD.exe hat da ein zwar dokumentiertes (siehe
Den obigen Code als Bachfile speichern, auf dem Netzwerk-Share ablegen und aus einem Explorerfenster per Doppelklick starten. Auf dem Desktop werden dann zwei Textdateien mit dem Listing der Dateien auf dem Share erstellt.
Die eine Datei enthält die Netzwerk-Pfade zu den Dateien (\\Server\Share\Datei). An den Pfaden in der anderen Datei sieht man, dass der
Gruß
Friemler
wie rubberman schon schrieb: CMD.exe hat da ein zwar dokumentiertes (siehe
PUSHD /?
) aber relativ unbekanntes Feature eingebaut.@echo off & setlocal
set "OutFile1=%UserProfile%\Desktop\MountedDir.txt"
set "OutFile2=%UserProfile%\Desktop\SharePathDir.txt"
pushd "%~dp0"
(for /r "%CD%" %%f in (*.*) do (
echo %%f
)) > "%OutFile1%"
popd
(for /r "%~dp0" %%f in (*.*) do (
echo %%f
)) > "%OutFile2%"
Den obigen Code als Bachfile speichern, auf dem Netzwerk-Share ablegen und aus einem Explorerfenster per Doppelklick starten. Auf dem Desktop werden dann zwei Textdateien mit dem Listing der Dateien auf dem Share erstellt.
Die eine Datei enthält die Netzwerk-Pfade zu den Dateien (\\Server\Share\Datei). An den Pfaden in der anderen Datei sieht man, dass der
PUSHD
-Befehl das Share als Laufwerk Z:
mappt, falls es noch kein Laufwerk mit dieser Bezeichnung gibt. Ansonsten ist es der erste unbenutzte Buchstabe von Z aus abwärts.Gruß
Friemler
Hallo,
warum kopierst Du die CMD dorthin?
Was soll Dir das bringen?
Du kannst Sie auch einfach mit dem Zielverzeichnis starten.
Das führt dann zu Deiner Fehlermeldung .
Also auch hier wozu?
Du kannst einfach mit der lokalen Dir folgendes machen.
oder
wenn Du alle Verzeichnisse haben möchtest
Stefan
warum kopierst Du die CMD dorthin?
Was soll Dir das bringen?
Du kannst Sie auch einfach mit dem Zielverzeichnis starten.
Das führt dann zu Deiner Fehlermeldung .
Also auch hier wozu?
Du kannst einfach mit der lokalen Dir folgendes machen.
dir \\server01\daten > c:\temp\liste1.txt
dir /s \\server01\daten > c:\temp\liste1.txt
Stefan
Hallo,
langsam verstehe ich (vieleicht).
Wenn Du eine Batchdatei lokal aufrufst, ist der Speicherort auf der aktuelle Pfad.
Z.B. c:\temp\test.bat
Wenn die Batchdatei aus einer URL stammt, dann nicht.
Z.B. \\server01\daten\test.bat
In diesem Fall wird der aktuelle Pfad auf den lokalen Standardpfad zurückgestellt.
Dies kann man durch 3 Ansätze umgehen
- Aufruf von einem Netzwerklaufwerk mit Buchstaben
- Aufruf mit dem gewünschten Pfad als Parameter (z.B. mit einer Verknpüfung oder einer anderen Batchdatei)
- Den Pfad hart in die Datei schreiben
Oder ganz elegemant ein kleines Programm mit z.B. VB schreiben.
Viele Grüße
Stefan
langsam verstehe ich (vieleicht).
Wenn Du eine Batchdatei lokal aufrufst, ist der Speicherort auf der aktuelle Pfad.
Z.B. c:\temp\test.bat
Wenn die Batchdatei aus einer URL stammt, dann nicht.
Z.B. \\server01\daten\test.bat
In diesem Fall wird der aktuelle Pfad auf den lokalen Standardpfad zurückgestellt.
Dies kann man durch 3 Ansätze umgehen
- Aufruf von einem Netzwerklaufwerk mit Buchstaben
- Aufruf mit dem gewünschten Pfad als Parameter (z.B. mit einer Verknpüfung oder einer anderen Batchdatei)
- Den Pfad hart in die Datei schreiben
Oder ganz elegemant ein kleines Programm mit z.B. VB schreiben.
Viele Grüße
Stefan
Hallo webbudda,
eigentlich dachte ich, dass Du den Demo-Code aus meinem ersten Posting selbst an Deine Wünsche anpasst. Aber OK, ich habe das Script oben geändert, jetzt ackert es die Verzeichnisstruktur rekursiv durch. Den Dateifilter in den Klammern der
Zu den Dateien, die auf dem Desktop abgelegt werden:
Dass die
Um das zu debuggen, entferne das
Zusätzlich kannst Du auch die erste
[EDIT]
Die Fehlermeldung btr. UNC-Pfad kannst Du ignorieren.
[/EDIT]
Gruss
Friemler
eigentlich dachte ich, dass Du den Demo-Code aus meinem ersten Posting selbst an Deine Wünsche anpasst. Aber OK, ich habe das Script oben geändert, jetzt ackert es die Verzeichnisstruktur rekursiv durch. Den Dateifilter in den Klammern der
FOR
-Schleifen zu konfigurieren solltest Du selbst hinbekommen. Du kannst dort auch mehrere Filter durch Leerzeichen getrennt angeben.Zu den Dateien, die auf dem Desktop abgelegt werden:
- Die Datei
MountedDir.txt
enthält das Verzeichnislisting in der Form "Z:\Datei
" bzw. "Z:\Ordner\Datei
", wenn das Netzwerkshare vomPUSHD
-Befehl als LaufwerkZ:
gemounted wurde (hängt von Deinen lokalen Gegebenheiten ab, stattZ:
könnte es auchY:
,X:
, usw. sein, eben der erste unbenutzte Laufwerksbuchstabe von Z abwärts). - Die Datei
SharePathDir.txt
enthält das Verzeichnislisting in der Form "\\Server\Share\Datei
" bzw. "\\Server\Share\Ordner\Datei
".
Dass die
SharePathDir.txt
nicht erzeugt wird, kann ich nicht nachvollziehen, funktioniert hier einwandfrei. Ist vielleicht ein Problem mit Zugriffsrechten.Um das zu debuggen, entferne das
@echo off
am Anfang des Scripts und starte das Script per Tastatureingabe aus einem Konsolenfenster, NICHT per Doppelklick in einem Explorerfenster. Dann kannst Du die Abarbeitung des Scripts verfolgen und siehst auch evtl. auftretende Fehlermeldungen.Zusätzlich kannst Du auch die erste
FOR
-Schleife zur Erstellung der MountedDir.txt
entfernen und nur die SharePathDir.txt
durch die andere FOR
-Schleife erstellen lassen.[EDIT]
Die Fehlermeldung btr. UNC-Pfad kannst Du ignorieren.
[/EDIT]
Gruss
Friemler