2012-01-26 26 views
60

Sto cercando di eseguire un file batch da una condivisione di rete, ma continuo a ricevere il seguente messaggio: "Il percorso UNC non è supportato. Il file batch si trova su \\Server\Soft\WPX5\install.bat. Mentre ho effettuato l'accesso come amministratore, dal mio desktop di Windows 7, navigo fino a \\Server\Soft\WP15\ e faccio doppio clic su install.bat, quando ottengo che "il percorso UNC non è supportato". Messaggio. Ho trovato alcuni suggerimenti online che affermano che l'unità di mappatura non funzionerà, ma l'utilizzo di un collegamento simbolico risolverà questo problema, ma il collegamento simbolico non ha funzionato per me. Di seguito è riportato il mio contenuto del file batch, apprezzerei qualsiasi assistenza che possa aiutarmi a realizzare ciò che sto cercando di fare. Fondamentalmente, voglio essere in grado di eseguire il file batch da \\Server\Soft\WP15\install.bat.Come eseguire il file batch dalla condivisione di rete senza il messaggio "UNC percorso non supportato"?

contenuto del file batch

mklink /d %userprofile%\Desktop\WP15 \\server\soft\WP15 
\\server\soft\WP15\setup.exe 
robocopy.exe "\\server\soft\WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates" 
Regedit.exe /s \\server\soft\WPX5\Custom\Migrate.reg 

Inoltre, come faccio a rimuovere il collegamento simbolico dopo che l'installazione è stata completata?

+2

Anni dopo, ma forse utile a qualcun altro: dopo aver creato il collegamento simbolico, perché continui a fare riferimento al percorso originale? Il punto del collegamento simbolico è di darti un percorso locale che puoi usare al posto tuo. Per esempio. non dire "\\ server \ soft \ WP15 \ setup.exe", dì "% userprofile% \ Desktop \ WP15 \ setup.exe – ToolmakerSteve

+0

seriamente questa è una domanda ServerFault.com –

risposta

8

Fondamentalmente, non è possibile eseguirlo da un percorso UNC senza visualizzare quel messaggio.

Quello che faccio di solito è mettere uno CLS nella parte superiore dello script, quindi non devo vedere quel messaggio. Quindi, specificare il percorso completo dei file nella condivisione di rete che è necessario utilizzare.

+1

Grazie. Proverò questo come ultima opzione, se non ci sono altre soluzioni – Stew

+0

@jameslr risposta funzionerà, ma è più lavoro (digitazione) di quanto io di solito sono disposto a fare. Quindi, basta cancellare lo schermo per sbarazzarsi dell'errore è abbastanza buono per me. :) – aphoria

3

Invece di avviare il batch direttamente da explorer: creare un collegamento al batch e impostare la directory di avvio nelle proprietà del collegamento su un percorso locale come% TEMP% o qualcosa del genere.

Per eliminare il collegamento simbolico, utilizzare il comando rmdir.

+1

Funzionerà, ma solo se si desidera avviare da un collegamento. Non sarà di aiuto se si desidera eseguire da una riga di comando o chiamare da un altro file batch. – aphoria

+2

Se si desidera chiamare da un altro batch o riga di comando che puoi chiamare in questo modo: start/d% TEMP% \\ Server \ Soft \ WP15 \ install.bat – jameslr

113

PUSHD e POPD dovrebbero aiutare nel vostro caso.

@echo off 
:: Create a temporary drive letter mapped to your UNC root location 
:: and effectively CD to that location 
pushd \\server\soft 

:: Do your work 
WP15\setup.exe 
robocopy.exe "WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates" 
Regedit.exe /s WPX5\Custom\Migrate.reg 

:: Remove the temporary drive letter and return to your original location 
popd 

Tipo PUSHD /? dalla riga di comando per ulteriori informazioni.

+0

Grazie per le risposte e i suggerimenti rapidi. Speravo che il tuo suggerimento potesse funzionare, ma sfortunatamente non ha funzionato me. Ho ricevuto lo stesso messaggio: "... I percorsi UNC non sono supportati. Predefinito alla directory di Windows. "Ho anche avuto la finestra di dialogo Controllo account utente per fare clic su Sì o No, anche se ho eseguito il file mentre ero loggato come membro del gruppo di amministratori. – Stew

+21

@Stew All'inizio del file .bat, inserisci : 'pushd% ~ dp0' Questo dovrebbe portarlo a cambiare la directory in quella contenente il file bat, ma continuerà a stampare l'avviso, ma dovrebbe funzionare come di consueto. Se il file bat usa '% ~ dp0' altrove, potrebbe avere problemi con questo, in quel caso, puoi scoprire se '% ~ dp0' inizia con '//' all'inizio del file bat, e se quindi, 'pushd', quindi esegui di nuovo il file bat, quindi goto: EOF'. Ciò causerà l'esecuzione nella directory appena mappata. –

+0

il cmd sarà eseguito sul computer remoto o locale? –

18

C'è un registry setting per evitare questo controllo di sicurezza (usarlo a proprio rischio, però):

Sotto il percorso del Registro

    HKEY_CURRENT_USER
        \ Software
            \ Microsoft
                \ Command Processor

aggiungere il valore DisableUNCCheck REG_DWORD e impostare il valore a 0 x 1 (Hex).

1

Ho incontrato lo stesso problema da poco a lavorare con un file batch in un'unità di condivisione di rete in Windows 7.

Un altro modo che ha funzionato per me è stato quello di mappare il server a un drive through di Windows Explorer: Strumenti -> Connetti unità di rete.Dagli una lettera di unità e un percorso di cartella a \ yourserver. Poiché lavoro con la condivisione di rete, spesso la mappatura rende più conveniente e ha risolto l'errore "UNC path non supportato".

1

La mia situazione è leggermente diversa. Sto eseguendo un file batch all'avvio per distribuire l'ultima versione delle applicazioni aziendali interne.

In questa situazione che sto utilizzando il Registro di Windows Esegui chiave con la seguente stringa

cmd /c copy \\serverName\SharedFolder\startup7.bat %USERPROFILE% & %USERPROFILE%\startup7.bat 

Questo gestisce due comandi all'avvio nella sequenza corretta. Prima copia il file batch localmente in una directory a cui l'utente ha il permesso. Quindi eseguendo lo stesso file batch. Posso creare una directory locale c: \ InternalApps e copiare tutti i file dalla rete.

Probabilmente è troppo tardi per risolvere la domanda del poster originale, ma potrebbe aiutare qualcun altro.

7

Avevo bisogno di essere in grado di esplorare solo Windows Explorer attraverso la condivisione del server, quindi fare doppio clic sul file batch. @dbenham mi ha portato a una soluzione più facile per il mio scenario (senza le preoccupazioni popd):

:: Capture UNC or mapped-drive path script was launched from 
set NetPath=%~dp0 

:: Assumes that setup.exe is in the same UNC path 
%NetPath%setup.exe 

:: Note that NetPath has a trailing backslash ("\") 
robocopy.exe "%NetPath%Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates" 
Regedit.exe /s %NetPath%..\WPX5\Custom\Migrate.reg 

:: I am not sure if WPX5 was typo, so use ".." for parent directory 
set NetPath= 
pause 
+0

@ peter-mortensen, modificato i commenti nella sceneggiatura 4x per capitalizzare la prima parola? Degno di una modifica? Perché non mettere un punto alla fine per renderlo una frase? Che ne dici: perché è solo un commento, di proposito NON uso maiuscolo maiuscolo nella prima parola nei commenti TRANNE in appunti e variabili (o enfasi) per una comprensione più chiara. –

7

mi sento cls è la risposta migliore. Nasconde il messaggio UNC prima che chiunque possa vederlo. L'ho combinato con un @pushd %~dp0 subito dopo in modo che sembrerebbe come aprire lo script e mappare la posizione in un solo passaggio, evitando così ulteriori problemi UNC.

cls 
@pushd %~dp0 
::::::::::::::::::: 
:: your script code here 
::::::::::::::::::: 
@popd 

Note:

pushd cambierà la vostra directory di lavoro alla posizione script nella nuova unità mappata.

popd alla fine, per pulire l'unità mappata.

+1

Avevo bisogno del 'popd' alla fine (Windows 7), altrimenti le unità mappate rimanevano bloccate dopo che la finestra era chiusa. – Patrick

+0

Grazie. Aggiornerò il codice – Grallen

+0

funziona bene. Grazie. –