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.
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
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