Discussione:
REFRESH PATH IN SESSIONE CMD
(troppo vecchio per rispondere)
MICHELE
2007-01-10 17:42:46 UTC
Permalink
Salve,
vorrei sapere come si fa a fare il refresh del path in una sessione
cmd.
Mi spiego meglio, dopo l'installazione di un programma scrivendo path
osservo che vengono inserite alcune voci rispetto a prima.
Se però prima dell'installazione ho aperto una finesta cmd se scrivo
path osservo che ricorda il vecchio path.
Come faccio ad aggiornare in quella sessione cmd i path.
Non posso chidere la sessione corrente e riaprine una nuova..altrimenti
non si porrebbe il problema

Grazie per l'attezione
Spigolo [MVP]
2007-01-14 19:18:10 UTC
Permalink
Ciao, MICHELE!
Post by MICHELE
Come faccio ad aggiornare in quella sessione cmd i path.
Non posso chidere la sessione corrente e riaprine una nuova..altrimenti
non si porrebbe il problema
Prova a leggere il path corrente dal registro.

------ start restorepath.bat
for /f "tokens=3 skip=4" %%i in ('reg query
"HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v
path') do set path=%%i
for /f "tokens=1,3 skip=4" %%i in ('reg query "HKCU\Environment"') do set
path=!path!;%%i=%%j
------ end restorepath.bat

Questo bat di due righe (occhio che andranno a capo) dovrebbe fare quello
che chiedi.
La condizione indispensabile è lanciare l'ambiente CMD con lo switch /V:ON
per abilitare l'espansione ritardata delle variabili.
Se la cosa non ti è possibile devi scrivere qualche riga in più, oppure
salta la seconda istruzione se non ti interessano i percorsi aggiunti
dall'utente corrente.
--
Paolo Angioni - MVP - Shell/User
MICHELE
2007-01-15 13:30:01 UTC
Permalink
Post by Spigolo [MVP]
------ start restorepath.bat
for /f "tokens=3 skip=4" %%i in ('reg query
"HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v
path') do set path=%%i
for /f "tokens=1,3 skip=4" %%i in ('reg query "HKCU\Environment"') do set
path=!path!;%%i=%%j
------ end restorepath.bat
Ti ringrazio per la risposta, dopo la prima riga il comando reg non
funziona più forse ancora una volta per problemi di path
Se faccio solo il primo o solo il secondo il comando osql non si
ripristina

Grazie per l'attenzione
Spigolo [MVP]
2007-01-15 21:25:18 UTC
Permalink
Ciao, MICHELE!
Post by MICHELE
Ti ringrazio per la risposta, dopo la prima riga il comando reg non
funziona più forse ancora una volta per problemi di path
Se faccio solo il primo o solo il secondo il comando osql non si
ripristina
Mi devi scusare ma non ho capito bene cosa ti succede.
La prima istruzione ripristina l'environment di sistema, la seconda il set
specifico per l'utente corrente.
Puoi controllare con start>>esegui>>sysdm.cpl>>avanzate>>variabili
d'ambiente
e decidere in quale ambito si trovano i percorsi che vuoi ripristinare.
Hai aperto la shell con "cmd /v:on"?
Potresti postare l'output completo del batch? (aggiungi l'istruzione "set
path" dopo i due for)
Post by MICHELE
Grazie per l'attenzione
Prego
--
Paolo Angioni - MVP - Shell/User
MICHELE
2007-01-17 13:54:53 UTC
Permalink
Post by Spigolo [MVP]
Mi devi scusare ma non ho capito bene cosa ti succede.
La prima istruzione ripristina l'environment di sistema, la seconda il set
specifico per l'utente corrente.
Puoi controllare con start>>esegui>>sysdm.cpl>>avanzate>>variabili
d'ambiente
e decidere in quale ambito si trovano i percorsi che vuoi ripristinare.
Hai aperto la shell con "cmd /v:on"?
Potresti postare l'output completo del batch? (aggiungi l'istruzione "set
path" dopo i due for)
Il file cmd contiene solo una riga dove con il comando osql ripristino
un database partendo da un file .bak . Se il comando osql non funziona
ovviamente non può ripristinare nulla.
Questo script è inserito in un programma di installazione.
Ho osservato che è un banale problema di path cioè non sa cosa è
osql. se vado nella cartella dove si trova osql il comando funziona.
Se apro una qualsiasi sessione cmd da un certo momento in poi
dell'installazione del pacchetto il comando osql può essere lanciato
anche se mi trovo in c:\
Ma dalla sessione che mi interessa se lancio osql non fa nulla..
Di conseguenza devo precedere la riga del ripristino del db con una
riga che ripristina il path originale di windows.
Se precedo il ripristino con questo ho risolto ma se su un pc ha
un'altro percorso ovviamente non funzionerà vorrei qualche cosa di
generico
set path=%path% c:\Programmi\Microsoft SQL
Server\90\Tools\Binn;C:\Programmi\Microsoft SQL Server\80\Tools\Binn


Per quello che mi hai scritto in precedenza ho fatto la seguente prova.
ho inserito il codice in un file cmd dove osql funziona seguito da
pause per leggere eventuali errori
scrivo:
OSQL
vedo che mi chiede i parametri quindi funziona

lancio la prima riga del codice che mi hai dato
lancio la seconda riga e mi dice

reg non è riconosciuto come comando interno o esterno
rilancio osql
osql non è riconosciuto come comando interno o esterno

Come ultima cosa controllando nelle variabili d'ambiente alla voce path
leggo le due voci
C:\Programmi\Microsoft SQL Server\80\Tools\Binn\;C:\Programmi\Microsoft
SQL Server\90\Tools\binn\
che permettono il funzionamento di osql da qualsiasi posizione..


Grazie per l'attenzione
Spigolo [MVP]
2007-01-18 18:20:51 UTC
Permalink
Ciao, MICHELE!
Post by MICHELE
Ho osservato che è un banale problema di path cioè non sa cosa è
osql. se vado nella cartella dove si trova osql il comando funziona.
Se apro una qualsiasi sessione cmd da un certo momento in poi
dell'installazione del pacchetto il comando osql può essere lanciato
anche se mi trovo in c:\
Ma dalla sessione che mi interessa se lancio osql non fa nulla..
Di conseguenza devo precedere la riga del ripristino del db con una
riga che ripristina il path originale di windows.
Premetto che non so nulla di SQL e che per questo ti inviterei a postare la
richiesta anche nel ng dedicato a questa tecnologia:
microsoft.public.it.sql

Da quello che capisco e che contraddice il post originale, il path
all'utlility osql è assente prima dell'invocazione del comando.
Non lo troverai quindi nè nel registro nè altrove.
E' il tuo pacchetto che lo aggiunge in una fase successiva.
Sarebbe abbastanza banale aggiungere un percorso fisso al path prima di
lanciare osql, ma è problematico settare programmaticamente un percorso
variabile *per machine* senza che vi siano relazioni predeterminabili (una
variabile di sistema presente nell'ambiente)

Fra le variabili di ambiente ne trovi una che fa al caso tuo?
Mi sapresti indicare il valore completo della variabile Path così come
appare in Sistema>>Avanzate, eventualmente prima e dopo l'installazione del
pacchetto che effettua l'aggiunta di percorso?
(fai un doppio click sul nome e copia/incolla il contenuto)
Post by MICHELE
lancio la prima riga del codice che mi hai dato
lancio la seconda riga e mi dice
reg non è riconosciuto come comando interno o esterno
rilancio osql
osql non è riconosciuto come comando interno o esterno
Come ho già specificato, per eseguire la seconda istruzione DEVI aprire il
prompt comandi con:
CMD /V:ON
In caso contrario (solo CMD) non verrà eseguita correttamente.
Mi stranisce però che la prima riga non imposti, come sembra, il path
corretto.
Prova ad eseguire il batch con qualche riga di debug:

------ start
echo off
path
for /f "tokens=3 skip=4" %%i in ('reg query
"HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v
path') do set path=%%i
path
for /f "tokens=1,3 skip=4" %%i in ('reg query "HKCU\Environment"') do set
path=!path!;%%i=%%j
path
------ end
(sono sei righe ed iniziano con echo, path, for, path, for, path.
Ricostruiscile correttamente. )

Copia l'output (segna, seleziona col mouse e copia dal menu Modifica della
finestra del prompt) ed incollalo nella tua risposta
Post by MICHELE
Come ultima cosa controllando nelle variabili d'ambiente alla voce path
leggo le due voci
C:\Programmi\Microsoft SQL Server\80\Tools\Binn\;C:\Programmi\Microsoft
SQL Server\90\Tools\binn\
Sicuro che sia binn e non bin?
--
Paolo Angioni - MVP - Shell/User
Karappo [MVP]
2007-01-18 18:39:48 UTC
Permalink
Post by Spigolo [MVP]
for /f "tokens=1,3 skip=4" %%i in ('reg query "HKCU\Environment"') do set
path=!path!;%%i=%%j
path
Con il comando reg hai dimenticato di chiedere il valore path
reg query "HKCU\Environment" la tua proposta
REG QUERY "HKCU\Environment" /v path quanto sospetto necessario

Non credo sia necessario postare sul ng dedicato a sql
Afaik l'espansione ritardata delle variabili non e' abilitata di
default (/v:on) pertanto normalmente !path! non ha senso.

Sfortunatamente l'op ha iniziato un thread anche in windowsxp:
http://groups.google.it/group/microsoft.public.it.windowsxp/browse_frm/thread/a7e6e37b4e3b855f/907b930083db82bc#907b930083db82bc
per quanto li esposto IMHO basta ripristinare la parte in hkcu del path
per raggiungere il risultato richiesto.
--
Ciaoo
Roberto Scassellati
Microsoft MVP - Windows - Shell/User
Spigolo [MVP]
2007-01-18 19:03:18 UTC
Permalink
Ciao, Karappo [MVP]!
Post by Karappo [MVP]
Con il comando reg hai dimenticato di chiedere il valore path
reg query "HKCU\Environment" la tua proposta
REG QUERY "HKCU\Environment" /v path quanto sospetto necessario
Non esiste il valore path. Devo fare il parsing di tutti i valori presenti.
Post by Karappo [MVP]
Non credo sia necessario postare sul ng dedicato a sql
Beh, magari là potrebbe essere una questione già affrontata. Quien sabe?
Post by Karappo [MVP]
Afaik l'espansione ritardata delle variabili non e' abilitata di
default (/v:on) pertanto normalmente !path! non ha senso.
Appunto. NON è abilitata (V:OFF) :-)
Per !path! mi serve abilitata.
:-D
--
Paolo Angioni - MVP - Shell/User
Karappo [MVP]
2007-01-18 19:15:43 UTC
Permalink
Post by Spigolo [MVP]
Non esiste il valore path. Devo fare il parsing di tutti i valori presenti.
Nel caso dell'op esiste non e' necessario fare quanto dichiari.
Post by Spigolo [MVP]
Appunto. NON è abilitata (V:OFF) :-)
Per !path! mi serve abilitata.
La shell usata dall'op dovrebbe essere modificata di proposito, pare
non sia possibile dato che non puo' nememno chiuderla per aprirne
un'altra
--
Ciaoo
Roberto Scassellati
Microsoft MVP - Windows - Shell/User
Karappo [MVP]
2007-01-18 20:01:05 UTC
Permalink
Post by Karappo [MVP]
Post by Spigolo [MVP]
Non esiste il valore path. Devo fare il parsing di tutti i valori presenti.
Nel caso dell'op esiste non e' necessario fare quanto dichiari.
Non e' vero, a quanto pare non esiste. Spero che adesso il thread
prosegua solo su un ng.
--
Ciaoo
Roberto Scassellati
Microsoft MVP - Windows - Shell/User
Loading...