2016-04-09 12 views
0

Der Zweck der Batch-Dateien besteht darin, ein Verzeichnis zu durchlaufen, alle Dateien mit einem Änderungsdatum zwischen x und y in ein temporäres Verzeichnis zu verschieben (in einem Archivordner). Zip aus Temp-Verzeichnis, dann löschen Sie schließlich das Temp-Verzeichnis.UNC-Pfade, die in der aufgerufenen Batch-Datei nicht unterstützt werden

Ich rufe eine Charge aus einer Charge. Der erste Stapel verwendet pushd, um den Netzwerkpfad abzurufen, aber wenn der nächste Stapel aufgerufen wird und die forfiles verwendet werden, um Dateien in ein Archiv zu verschieben, wird der UNC-Pfadfehler ausgelöst. "FEHLER: UNC-Pfade (\ machine \ share) werden nicht unterstützt."

Die beiden .bat-Dateien befinden sich im gemeinsamen Netzwerk im selben Verzeichnis.

Ich habe die andere Antwort für dieses ähnliche Problem gelesen, aber keine der Antworten behebt mein Problem.

Erste Batch-Datei:

@echo off 
setlocal EnableExtensions 
cls 
@pushd %~dp0 

:firststep 
........ 
code.... 
........ 
echo Calling... 
CALL ArchiveTool.bat %MM% %yyyy% \\riskview\EBSArchive 
echo Press any key to process next directory... 
pause >nul 

alles Hierher funktioniert.

Failing Partie:

@echo off 
setlocal EnableExtensions 
....... 
Code... 
....... 
md %3\Archive\%1-%2 
forfiles /P %3 /D +%1/1/%2 /C "cmd /c if /I @FDATE LSS %mm%/1/%2 move @file     
%3\Archive\%1-%2 >NUL & echo|set /p=." 

Das Verzeichnis wird erfolgreich erstellt, aber das forfiles ausfällt.

+0

1) Ich würde empfehlen Ihnen dringend, für irgendetwas von beliebiger Komplexität ein Powershell-Skript anstelle einer BAT-Datei zu verwenden. 2) Wenn Sie eine .bat-Datei verwenden müssen - und wenn UNC-Namen nicht funktionieren ... dann könnte eine einfache Lösung darin bestehen, die Freigabe einem Laufwerksbuchstaben zuzuordnen. – paulsm4

+0

Sie können den vollständigen UNC-Pfad für die .bat mit Anführungszeichen nach "call" festlegen. Und% ~ dp0 sollte für den freigegebenen Netzwerkpfad als% ~ p0 ersetzt werden. 'Pushd' kann nicht für den UNC-Pfad verwendet werden. – enjoying

Antwort

0

UNC default paths are turned off by default as they used to crash older programs.[10]

The Dword registry value DisableUNCCheck at HKEY_CURRENT_USER\Software\Microsoft\Command Processor [10] allows the default directory to be UNC. CD command will refuse to change but placing a UNC path in Default Directory in a shortcut to Cmd or by using the Start command. start "" /d \127.0.0.1\C$ "cmd /k" (C$ share is for administrators).

Von meinem Eintrag bei https://en.wikipedia.org/wiki/Batch_file#Setting_a_UNC_working_directory_from_a_shortcut