Comando Net Use con relativo percorso target


1

Ho un file batch che si trova in diverse cartelle e in questo file ho bisogno di sostituire il vecchio subst T: . comando per net use perché le unità (unità) hanno proprietà diverse in Windows 7.

Tuttavia, l'ho trovato solo net use consente solo percorsi assoluti come:

net use T: \\path\to\folder

Non posso lavorare con percorsi assoluti, ma net use T: . non è permesso (genera un errore).

C'è un modo per eseguire il net use comando da una cartella in modo che usi la directory .bat corrente?

Penso che la soluzione migliore per me sarebbe quella di essere in grado di ottenere il percorso assoluto qualificato (\ path \ to \ folder) con un comando batch. (% cd% e le variabili chdir non funzionano in questo caso). Domande su come ottenere il nome della directory o della cartella corrente non sono utili poiché net use comando non consente percorsi come x:\path\to\folder


Cosa stai cercando di realizzare? Crea un rimpiazzo 1: 1 per subst? Inoltre, non capisco davvero perché subst non è più sufficiente Potresti forse elaborare?
Daniel B

Ovviamente. Non sono entrato nei dettagli perché non rientrava nella portata della domanda. Quando si eseguono eseguibili non firmati da un'unità di rete creata con subst Windows richiede sempre il messaggio: "il publisher non può essere verificato ..." e ho bisogno che il messaggio non venga visualizzato.
Jorge

@DanielB. Continuazione: il problema è che ho abbassato tutta la sicurezza della rete locale e ho provato tutto per evitare questo messaggio, ma continua a scoppiare ogni volta che lo eseguo. Tuttavia, se l'unità di rete viene creata dal computer --> map network drive pulsante, anche se il percorso della cartella correlata è lo stesso con cui si è comportato diversamente subst. Windows non mi mostra più il messaggio in questo modo. Quindi quello di cui ho bisogno è un comando di Windows per fare quello che fa quel pulsante.
Jorge

Risposte:


1

Il %~dp0 darà esattamente quello che stai chiedendo (es. \\server\share\to\folder ). Ma tu non si può usalo per il tuo net use comando. Il net use comando accetta solo il \\server\share parte per creare una lettera di unità.

Puoi fare un po 'di lavoro per togliere il \to\folder -part e aggiungerlo successivamente nei file batch, ma potrebbe essere meglio usare il pushd \\server\share\to\folder comando. Con questo comando è stata creata una lettera del driver temporanea e la directory corrente viene automaticamente modificata nella cartella corretta. Con il popd -Come sei tornato dove hai iniziato e l'unità temporanea è stata rilasciata.

Così:

C:\>

C:\>pushd \\wdmycloud\public\new folder

Z:\New folder>::do your thing
Z:\New folder>
Z:\New folder>popd

C:\>

B.T.W. se hai bisogno di scoprire quale unità temporanea è stata creata puoi usare il %~d0 nei tuoi file batch. E %~dp0 per il percorso completo e così via (o %cd% ovviamente :)).


L'ho provato e non funziona. Un comando come questo: net use T: c:\path\to\folder non funziona. L'utilizzo della rete prevede percorsi UNC come \\ server \ percorso
Jorge

@Jorge Il ~ dp0 dovrebbe darti un percorso UNC completo se inserisci il file batch sulla rete e lo avvii tramite il percorso UNC. Non funziona se lo si avvia già da una lettera di unità. Cosa ottieni con l'echo-example?
Rik

@Jorge O aspetta. Questo potrebbe darti problemi con le sottocartelle. ~dp0 ti fornirà il percorso completo della sottocartella che non puoi utilizzare net use. Dovresti spogliarli. Ma non lo farei pushd essere un'opzione migliore o hai bisogno che sia T: nello specifico. Se fate pushd \\path\to\folder finisci dentro Z:\folder con Z: essere una lettera di guida temporanea. Con popd torni indietro e Z: è rilasciato. Non è un'opzione migliore ?? (Altrimenti proverò a trovare un modo per rimuovere la cartella per te)
Rik

@Jorge Vedendo che non puoi usare \\server\share\to\folder per net use -comando che non puoi usare %~dp0 o. Ho cambiato completamente la mia risposta all'utilizzo pushd che sarebbe molto più adatto in questa situazione.
Rik

Ok, non so se mi manca qualcosa, ma questo è quello che mi sta succedendo: ho già \\ server \ general \ percorso mappato a X: \ (tutti al lavoro hanno questo modo). Quello di cui ho bisogno ora è una sottocartella di X: da mappare a T :. Così: \\server\general\path\specific\path --> T:. Ma quando apro una finestra di comando da \\ server \ general \ path e eseguo un file bat con echo ~dp0 mi dà X: \ specifico \ percorso, quindi ~dp0 non sta funzionando per me
Jorge
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.