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ß
8 Antworten
- LÖSUNG 122990 schreibt am 13.01.2016 um 23:37:15 Uhr
- LÖSUNG rubberman schreibt am 14.01.2016 um 00:28:27 Uhr
- LÖSUNG Friemler schreibt am 14.01.2016 um 00:38:37 Uhr
- LÖSUNG StefanKittel schreibt am 14.01.2016 um 07:33:32 Uhr
- LÖSUNG webbudda schreibt am 14.01.2016 um 09:22:32 Uhr
- LÖSUNG StefanKittel schreibt am 14.01.2016 um 09:30:23 Uhr
- LÖSUNG webbudda schreibt am 14.01.2016 um 09:32:06 Uhr
- LÖSUNG Friemler schreibt am 14.01.2016 um 12:45:00 Uhr
- LÖSUNG webbudda schreibt am 14.01.2016 um 09:32:06 Uhr
- LÖSUNG StefanKittel schreibt am 14.01.2016 um 09:30:23 Uhr
- LÖSUNG webbudda schreibt am 14.01.2016 um 09:22:32 Uhr
LÖSUNG 13.01.2016, aktualisiert um 23:49 Uhr
LÖSUNG 14.01.2016, aktualisiert um 00:29 Uhr
LÖSUNG 14.01.2016, aktualisiert um 12:17 Uhr
Hallo,
wie rubberman schon schrieb: CMD.exe hat da ein zwar dokumentiertes (siehe PUSHD /?) aber relativ unbekanntes Feature eingebaut.
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
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
LÖSUNG 14.01.2016 um 07:33 Uhr
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
LÖSUNG 14.01.2016 um 09:22 Uhr
Die cmd kopiert, weil der batch ja nicht lokal liegt (s.o.).
Es soll jeder auf dem Server einen batch ausführen können der den aktuellen Verzeichnisinhalt in eine Datei speichert. Dazu möchte ich eigentlich auch nicht temporär Laufwerke mappen bei den Leuten auf dem Rechner, da ich nicht weiß, ob z.B. Z:\ bereits belegt ist.
Oder habe ich da etwas falsch verstanden?
Danke Friemler aber richtig verstehen tue ich das nicht was du schreibst. Es wird nur eine MountedDir erzeugt, die enthält leider nicht alle Unterverzecihnisse rekursiv.
Danke & Gruß
Es soll jeder auf dem Server einen batch ausführen können der den aktuellen Verzeichnisinhalt in eine Datei speichert. Dazu möchte ich eigentlich auch nicht temporär Laufwerke mappen bei den Leuten auf dem Rechner, da ich nicht weiß, ob z.B. Z:\ bereits belegt ist.
Oder habe ich da etwas falsch verstanden?
Danke Friemler aber richtig verstehen tue ich das nicht was du schreibst. Es wird nur eine MountedDir erzeugt, die enthält leider nicht alle Unterverzecihnisse rekursiv.
Danke & Gruß
LÖSUNG 14.01.2016 um 09:30 Uhr
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
LÖSUNG 14.01.2016, aktualisiert um 12:44 Uhr
LÖSUNG 14.01.2016, aktualisiert um 12:51 Uhr
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 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:
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
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 vom PUSHD-Befehl als Laufwerk Z: gemounted wurde (hängt von Deinen lokalen Gegebenheiten ab, statt Z: könnte es auch Y:, 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