2013-06-24 252 views
26

Ho un problema nell'utilizzo del comando 'xcopy'.xcopy non viene riconosciuto come comando interno o esterno, programma eseguibile o file batch

Sto costruendo un progetto C# con msbuild. Alla fine della compilazione, viene chiamato un file batch per copiare i miei assembly da Debug/Release in altre cartelle.

Ecco il problema, il mio errore di compilazione e il log degli errori è 'xcopy non è riconosciuto come comando interno o esterno, programma eseguibile o file batch'.

Il percorso è impostato correttamente, xcopy funziona da una riga di comando di Windows e dalla riga di comando di Visual Studio (quello impostato con l'ambiente di progetto).

Ho provato a impostare il percorso nel file batch ma non aiuta.

Qualche suggerimento?

Sto utilizzando Windows 7

Acclamazioni :)

risposta

36

ho incontrato lo stesso problema.

Sembra essere un problema con la variabile di ambiente del percorso in Visual Studio.

Quando ho aggiunto una dichiarazione "percorso" per l'inizio del mio evento di compilazione, ha prodotto il seguente risultato:

PATH= 

Ciò sembra indicare che il percorso è vuota all'interno VS costruire ambiente.

Quando ho specificare il percorso completo per xcopy in questo modo, il problema è andato via:

%systemroot%\System32\xcopy ... 

Non sono sicuro di ciò che ha causato Visual Studio a perdere il suo percorso.

0

Ho anche avuto un problema con xcopy (stesso messaggio di errore) - con un programma batch molto semplice che utilizzo per il backup dei file su un'unità rimovibile. Ho usato quel programma per almeno 5 anni senza mai avere un problema. Poi ieri xcopy è sconosciuto a Win7. La sostituzione di xcopy con% systemroot% \ System32 \ xcopy in ogni istanza ha risolto il problema. Molto strano.

10

variabile Set Ambiente PATH = %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

6

E 'successo a me dopo che ho aggiornato una delle mie estensioni di Visual Studio, durante il quale Visual Studio è stato chiuso e riaperto dal programma di aggiornamento. Non potrei più costruire correttamente il mio progetto. Ho chiuso Visual Studio e l'ho riaperto e il problema è andato via.

+0

Lo stesso qui. Chiudere VS e aprirlo di nuovo ha risolto il problema. –

5

Questo non è un problema con Windows 7 o 8. In realtà è un problema con le applicazioni che aggiornano variabili di ambiente come PATH. Il PERCORSO è memorizzato nel Registro di sistema come "Valore stringa espandibile" (REG_EXPAND_SZ), ma molte applicazioni lo riscrivono nel Registro di sistema come "Valore stringa" (REG_SZ). Se il tuo percorso contiene qualcosa come% SYSTEMROOT%, questo non sarà espanso in C: \ Windows (o qualunque sia il tuo) se il percorso è sotred in un REG_SZ.

La correzione è semplicemente per modificare manualmente il percorso dal pannello di controllo. È necessario apportare una modifica (ad esempio aggiungere un; alla fine del percorso) e quindi applicarlo. Questo sistemerà il tuo percorso nel Registro di sistema come REG_EXPAND_SZ. (Vai al pannello di controllo del sistema e seleziona Impostazioni di sistema avanzate Modifica la variabile di ambiente Path nella casella in basso e questo dovrebbe risolverlo

Puoi dire se il tuo percorso è rotto in questo modo aprendo un prompt dei comandi e digitando PATH. sarà elencato il vostro percorso. Se si riesce a vedere nulla racchiusa in%% allora il vostro percorso non è in fase di espansione.

+0

Spot on Phil! Nel mio caso questo era su Windows XP e la voce nel registro (HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Control \ Session Manager \ Environment \ Path) era stata impostata su un REG_SZ. Ristabilire il percorso da Pannello di controllo> Sistema> Avanzate> Variabili di ambiente lo ha corretto nel registro. Quando ho avviato un nuovo prompt dei comandi, il percorso è stato correttamente "espanso". – prairiehat

-2

Vai alla variabile d'ambiente e percorso corretto tra cui ; all'ultimo. funzionerà, questo è per nulla relativo al sistema operativo o alla tecnologia Sta funzionando per me, non è nemmeno necessario riavviare il sistema operativo, basta aprire il nuovo prompt dei comandi

1

L'ho appena sperimentato per la prima volta con un file batch che utilizzo per copiare un'app di front-end Access per le macchine locali dell'utente. Il loro ambiente è un mix di Windows 7 & 8 e macchine a 32-64 bit. Ho notato che xcopy.exe era sia nelle cartelle System32 e SysWOW64 che mi chiedevo se ci fosse qualche conflitto. Quindi, ho copiato xcopy.exe nella cartella in cui si trova il file batch e ora sembra che funzioni. Ho pensato di condividerlo.

Eileen