Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.visual-basic > #19571 > unrolled thread

Aggiungere carattere in stringa registro

Started by"Cerebus" <Cerebus@test.it>
First post2019-03-11 17:44 +0100
Last post2019-04-28 23:43 +0200
Articles 20 on this page of 35 — 2 participants

Back to article view | Back to it.comp.lang.visual-basic


Contents

  Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-11 17:44 +0100
    Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-11 21:32 +0100
      Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-11 21:50 +0100
        Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-12 14:31 +0100
          Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-12 14:47 +0100
            Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-12 15:36 +0100
              Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-12 21:37 +0100
                Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-13 11:10 +0100
                  Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-13 14:41 +0100
                    Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-13 15:37 +0100
                      Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-13 16:08 +0100
                  Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-13 15:27 +0100
                    Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-13 16:20 +0100
                      Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-13 17:00 +0100
                        Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-13 17:19 +0100
                          Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-13 17:23 +0100
                            Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-13 17:49 +0100
                              Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-13 18:02 +0100
                                Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-13 18:20 +0100
                                  Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-13 18:24 +0100
                                    Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-13 18:31 +0100
                                      Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-13 18:58 +0100
                                        Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-13 20:41 +0100
                                          Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-13 21:30 +0100
                                            Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-13 23:03 +0100
                                              Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-14 23:10 +0100
                                                Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-14 23:21 +0100
                                                  Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-15 13:09 +0100
                                                    Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-15 13:20 +0100
                                                      Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-15 14:57 +0100
                                                Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-15 13:31 +0100
                                                  Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-03-15 14:56 +0100
                                                    Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-15 19:10 +0100
                                          Re: Aggiungere carattere in stringa registro SB <stNOOObenevSPAM@tin.it> - 2019-03-13 23:10 +0100
                                            Re: Aggiungere carattere in stringa registro "Cerebus" <Cerebus@test.it> - 2019-04-28 23:43 +0200

Page 1 of 2  [1] 2  Next page →


#19571 — Aggiungere carattere in stringa registro

From"Cerebus" <Cerebus@test.it>
Date2019-03-11 17:44 +0100
SubjectAggiungere carattere in stringa registro
Message-ID<q6639b$pq6$1@gioia.aioe.org>
Salve.
Ho bisogno di un aiuto.

Ho una chiave di registro a cui ho necessita' di aggiungere un carattere 
(uno qualsiasi), e poi di riportarla com'era.
Il tutto deve essere eseguito (o richiamabile) da file batch.

Esempio: la chiave contiene "computer"

Il batch esegue alcune operazioni (copie di file, cancellazioni, etc), poi 
dovrebbe leggere una certa chiave di registro, che in questo caso contiene 
"computer", la cambia (per esempio in computer-) e continua.
Proseguendo nel batch, poi dovrebbe rimetere la chiave a posto, in questo 
caso togliendo "-" alla chiave.

Per esempio, il file bat contiene:

cd\windows
del file.exe
copy nomefile.exe c:\
script.vbs <<< cambia una chiave aggiungendo "-"
copy altronome.exe c:\
script2.vbs <<< rimette a posto la chiave togliendo "-"

E' possibile fare cio' con uno script in VBS?

La chiave e'
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName

E' ovvio che il tutto verra' eseguito con i privilegi adeguati.
E' altrettanto ovvio che la chiave cambia da PC a PC, altrimenti non mi 
servirebbe alcun tipo di programmazione :)

Magari e' pure fattibile direttamente in batch, ma non ho idea di come.
Un aiuto, magari in VBS?

GRAZIE! 

[toc] | [next] | [standalone]


#19572

FromSB <stNOOObenevSPAM@tin.it>
Date2019-03-11 21:32 +0100
Message-ID<o1hd8e5v29bo4otdastb2cej0n07ofp8e0@4ax.com>
In reply to#19571
Il giorno Mon, 11 Mar 2019 17:44:28 +0100, "Cerebus" <Cerebus@test.it> ha
scritto:

>Salve.
>Ho bisogno di un aiuto.
>
>Ho una chiave di registro a cui ho necessita' di aggiungere un carattere 
>(uno qualsiasi), e poi di riportarla com'era.
>Il tutto deve essere eseguito (o richiamabile) da file batch.
>
>Esempio: la chiave contiene "computer"
>
>Il batch esegue alcune operazioni (copie di file, cancellazioni, etc), poi 
>dovrebbe leggere una certa chiave di registro, che in questo caso contiene 
>"computer", la cambia (per esempio in computer-) e continua.
>Proseguendo nel batch, poi dovrebbe rimetere la chiave a posto, in questo 
>caso togliendo "-" alla chiave.
>
>Per esempio, il file bat contiene:
>
>cd\windows
>del file.exe
>copy nomefile.exe c:\
>script.vbs <<< cambia una chiave aggiungendo "-"
>copy altronome.exe c:\
>script2.vbs <<< rimette a posto la chiave togliendo "-"
>
>E' possibile fare cio' con uno script in VBS?
>
>La chiave e'
>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName
>
>E' ovvio che il tutto verra' eseguito con i privilegi adeguati.
>E' altrettanto ovvio che la chiave cambia da PC a PC, altrimenti non mi 
>servirebbe alcun tipo di programmazione :)
>
>Magari e' pure fattibile direttamente in batch, ma non ho idea di come.
>Un aiuto, magari in VBS?

In VBS si può facilmente usare il registy

Un esempio che mi e servito:sono salvato e che mi è servito:
___________________________________

Set wShell = CreateObject( "WScript.Shell" )
'
' Create a new DWORD value:
wshShell.RegWrite "HKCU\TestKey\DWordTestValue", 1, "REG_DWORD"

' Create a new subkey and a string value in that new subkey:
wshShell.RegWrite "HKCU\TestKey\SubKey\StringTestValue", "Test", "REG_SZ"

' Read the values we just created:
WScript.Echo "HKCU\TestKey\DWordTestValue = " _
           & wshShell.RegRead( "HKCU\TestKey\DWordTestValue" )
WScript.Echo "HKCU\TestKey\SubKey\StringTestValue = """ _
           & wshShell.RegRead( "HKCU\TestKey\SubKey\StringTestValue" ) & """"

' Delete the subkey and key and the values they contain:
wshShell.RegDelete "HKCU\TestKey\SubKey\"
wshShell.RegDelete "HKCU\TestKey\"


' Note: Since the WSH Shell has no Enumeration functionality, you cannot
'       use the WSH Shell object to delete an entire "tree" unless you
'       know the exact name of every subkey.
'       If you don't, use the WMI StdRegProv instead.

' Release the object
Set wshShell = Nothing
___________________________

Per adattarlo alle tue esigenze naturalmente devi sostituire la stringa con il
valore del registro.



-- 
ciao
  Stefano

[toc] | [prev] | [next] | [standalone]


#19573

From"Cerebus" <Cerebus@test.it>
Date2019-03-11 21:50 +0100
Message-ID<q66hnb$sqb$1@gioia.aioe.org>
In reply to#19572
"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
news:o1hd8e5v29bo4otdastb2cej0n07ofp8e0@4ax.com...

> In VBS si può facilmente usare il registy

Maa... non fa quello che ho chiesto.
Io devo aggiungere un carattere ad una chiave, non la chiave in se'.

Oppure non ho capito io quello che hai postato...

[toc] | [prev] | [next] | [standalone]


#19575

FromSB <stNOOObenevSPAM@tin.it>
Date2019-03-12 14:31 +0100
Message-ID<eqcf8eh5014od3dh6vrd3nup3qvkqh946s@4ax.com>
In reply to#19573
Il giorno Mon, 11 Mar 2019 21:50:51 +0100, "Cerebus" <Cerebus@test.it> ha
scritto:

>
>"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
>news:o1hd8e5v29bo4otdastb2cej0n07ofp8e0@4ax.com...
>
>> In VBS si pu?cilmente usare il registy
>
>Maa... non fa quello che ho chiesto.
>Io devo aggiungere un carattere ad una chiave, non la chiave in se'.
>
>Oppure non ho capito io quello che hai postato...


Non c'è molto da capire, per cambiare una chiave in un registro devi scriverne
di nuovo il valore.
Il metodo .RegWrite serve proprio a quello.

https://ss64.com/vb/regwrite.html

Lo script che ti ho messo era un esempio con tutti i metodi di "WScript.Shell"
per il registry che sono:

   .RegRead          'Leggi registro 
   .RegDelete        'Cancella registro
   .RegWrite          'Scrivi registro


-- 
ciao
  Stefano

[toc] | [prev] | [next] | [standalone]


#19576

From"Cerebus" <Cerebus@test.it>
Date2019-03-12 14:47 +0100
Message-ID<q68d9u$11s9$1@gioia.aioe.org>
In reply to#19575
"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
news:eqcf8eh5014od3dh6vrd3nup3qvkqh946s@4ax.com...

> Non c'è molto da capire, per cambiare una chiave in un registro devi 
> scriverne
> di nuovo il valore.

Teoricamente non mi serve nemmeno scrivere nulla, ma solo esportare la 
chiave in un file di testo (so farlo), modificare il file di testo con uno 
script (non so farlo) e reimprtare la chiave (so farlo).

Il busillis e': qualcuno puo' gentilmente buttare giu' due righe di script 
per variare questa benedetta scritta in un file di testo?

Il file di testo contiene la seguente roba:

+++++++
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName]
"ComputerName"="esempio"
+++++++

Come si vede, tutto cio' che e' compreso tra gli ultimi due segni "=" deve 
essere seguito prima da un "-", e poi (con un secondo script) il "-" deve 
essere tolto.

Il file di testo diventa quindi:


+++++++
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName]
"ComputerName"="esempio-"
+++++++

...per poi tornare com'era.


[toc] | [prev] | [next] | [standalone]


#19577

FromSB <stNOOObenevSPAM@tin.it>
Date2019-03-12 15:36 +0100
Message-ID<apff8ep6224vfjojqj4njipo9lmr6vtfm2@4ax.com>
In reply to#19576
Il giorno Tue, 12 Mar 2019 14:47:41 +0100, "Cerebus" <Cerebus@test.it> ha
scritto:

>
>"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
>news:eqcf8eh5014od3dh6vrd3nup3qvkqh946s@4ax.com...
>
>> Non c'?olto da capire, per cambiare una chiave in un registro devi 
>> scriverne
>> di nuovo il valore.
>
>Teoricamente non mi serve nemmeno scrivere nulla, ma solo esportare la 
>chiave in un file di testo (so farlo), modificare il file di testo con uno 
>script (non so farlo) e reimprtare la chiave (so farlo).
>
>Il busillis e': qualcuno puo' gentilmente buttare giu' due righe di script 
>per variare questa benedetta scritta in un file di testo?
>
>Il file di testo contiene la seguente roba:
>
>+++++++
>Windows Registry Editor Version 5.00
>
>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName]
>"ComputerName"="esempio"
>+++++++
>
>Come si vede, tutto cio' che e' compreso tra gli ultimi due segni "=" deve 
>essere seguito prima da un "-", e poi (con un secondo script) il "-" deve 
>essere tolto.
>
>Il file di testo diventa quindi:
>
>
>+++++++
>Windows Registry Editor Version 5.00
>
>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName]
>"ComputerName"="esempio-"
>+++++++
>
>...per poi tornare com'era.

Qualcosa del genere, da me funziona, nel senso che cambia il valore della chiave
e poi la rimette a posto.
Ho messo i commenti così è più chiaro cosa fa.

RegKey.vbs
________________________


Set wshShell = CreateObject( "WScript.Shell" )


Reg_Key =
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\ComputerName"

'legge il valore
RegValue = wshShell.RegRead(Reg_Key)'& """"
WScript.Echo RegValue

'aggiunge  "-"
RegValueNew = RegValue & "-"

'mette il valore nuovo
wshShell.RegWrite (Reg_Key), RegValueNew, "REG_SZ"

'legge il valore nuovo
WScript.Echo wshShell.RegRead(Reg_Key)

'rimette il vecchio valore
wshShell.RegWrite (Reg_Key), RegValue, "REG_SZ"

'legge il valore vecchio
WScript.Echo wshShell.RegRead(Reg_Key)

Wscript.Quit
_________________________



-- 
ciao
  Stefano

[toc] | [prev] | [next] | [standalone]


#19578

From"Cerebus" <Cerebus@test.it>
Date2019-03-12 21:37 +0100
Message-ID<q695ce$hj5$1@gioia.aioe.org>
In reply to#19577
"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
news:apff8ep6224vfjojqj4njipo9lmr6vtfm2@4ax.com...

> Ho messo i commenti così è più chiaro cosa fa.

Ottimo.
Ci stiamo avvicinando.

Un dubbio: tra una modifica e l'altra (aggiungere e togliere "-") ho bisogno 
di eseguire un programma, per proseguire con lo script dopo che il programma 
e' stato chiuso.

Dal batch posso chiamarlo tranquillamente con CALL nomefile.exe, ma dal VBS?
Posso ugualmente?

Te lo chiedo perche' se divido il due parti il tuo script perdo il contenuto 
della variabile Reg_value, cioe' il nome computer prima di essere 
modificato.

Potremmo far scrivere questo nome in un file di testo per poi farlo 
rileggere dalla seconda parte dello script?
Lo divideremmo in script1.vbs e script2.vbs.
Il batch di occuperebbe di tutto.



> 'legge il valore nuovo
> WScript.Echo wshShell.RegRead(Reg_Key)

Qui dovremmo leggerlo dal file.txt

Oppure, visto che sappiamo GIA' che c'e' un "-" in piu', dovremmo toglierlo.
Quindi si rilegge la chiave con RegRead, che sara' "nomecomputer-", e gli si 
toglie l'ultimo carattere (non ho idea di come!).

Grazie ancora per la pazienza. 

[toc] | [prev] | [next] | [standalone]


#19580

FromSB <stNOOObenevSPAM@tin.it>
Date2019-03-13 11:10 +0100
Message-ID<5nkh8e5lnld7lldrle0hd9433tspev9b4d@4ax.com>
In reply to#19578
Il giorno Tue, 12 Mar 2019 21:37:32 +0100, "Cerebus" <Cerebus@test.it> ha
scritto:

>
>"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
>news:apff8ep6224vfjojqj4njipo9lmr6vtfm2@4ax.com...
>
>> Ho messo i commenti cos? pi?aro cosa fa.
>
>Ottimo.
>Ci stiamo avvicinando.
>
>Un dubbio: tra una modifica e l'altra (aggiungere e togliere "-") ho bisogno 
>di eseguire un programma, per proseguire con lo script dopo che il programma 
>e' stato chiuso.
>
>Dal batch posso chiamarlo tranquillamente con CALL nomefile.exe, ma dal VBS?
>Posso ugualmente?

Naturalmente, basta aggiungere:

Cmnd = "%windir%\system32\notepad.exe"

wshShell.Run (Cmnd ,1 ,True)

(dove il comando Cmnd  è una stringa.)

https://ss64.com/vb/run.html

Nota che il True alla fine dice al VBS di aspettare che l'esecuzione del
programma finisca prima di procedere oltre.

>Te lo chiedo perche' se divido il due parti il tuo script perdo il contenuto 
>della variabile Reg_value, cioe' il nome computer prima di essere 
>modificato.

>Potremmo far scrivere questo nome in un file di testo per poi farlo 
>rileggere dalla seconda parte dello script?
>Lo divideremmo in script1.vbs e script2.vbs.
>Il batch di occuperebbe di tutto.

Mi sembra più macchinoso, e il VBS può fare molte più cose che un batch.


>Oppure, visto che sappiamo GIA' che c'e' un "-" in piu', dovremmo toglierlo.
>Quindi si rilegge la chiave con RegRead, che sara' "nomecomputer-", e gli si 
>toglie l'ultimo carattere (non ho idea di come!).

Se il contenuto cambia solo per l'ultimo carattere puoi fare:

Regvalue = Mid (Regvalue, 1, Len(Regvalue) - 1)



-- 
ciao
  Stefano

[toc] | [prev] | [next] | [standalone]


#19581

From"Cerebus" <Cerebus@test.it>
Date2019-03-13 14:41 +0100
Message-ID<q6b19j$s37$1@gioia.aioe.org>
In reply to#19580
"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
news:5nkh8e5lnld7lldrle0hd9433tspev9b4d@4ax.com...

> Nota che il True alla fine dice al VBS di aspettare che l'esecuzione del
> programma finisca prima di procedere oltre.

Si, mi necessita cosi', esattamente come il "call" del batch.


> Se il contenuto cambia solo per l'ultimo carattere puoi fare:
>
> Regvalue = Mid (Regvalue, 1, Len(Regvalue) - 1)

Chiaro, ma tutto cio' se non "esco" dal VBS!
Quindi provero con wshShell.Run (Cmnd ,1 ,True)

Ti tengo informato e grazie.

[toc] | [prev] | [next] | [standalone]


#19583

FromSB <stNOOObenevSPAM@tin.it>
Date2019-03-13 15:37 +0100
Message-ID<725i8e9gqa593lmmmttu8f8fu373ioqk6j@4ax.com>
In reply to#19581
Il giorno Wed, 13 Mar 2019 14:41:05 +0100, "Cerebus" <Cerebus@test.it> ha
scritto:

>
>"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
>news:5nkh8e5lnld7lldrle0hd9433tspev9b4d@4ax.com...
>
>> Nota che il True alla fine dice al VBS di aspettare che l'esecuzione del
>> programma finisca prima di procedere oltre.
>
>Si, mi necessita cosi', esattamente come il "call" del batch.

A volte, se windows non rispetta esattamente i sincronismi, ad esempio in caso
di scrittura di files, puoi aver necessità di aggiungere un ritardo utile a
sincronizzare gli eventi, in quel caso basta scrivere in una linea:

Wscript.Sleep 100

dove il numero esprime i millisecondi di attesa, e l'esecuzione si ferma per il
tempo indicato.


-- 
ciao
  Stefano

[toc] | [prev] | [next] | [standalone]


#19584

From"Cerebus" <Cerebus@test.it>
Date2019-03-13 16:08 +0100
Message-ID<q6b6dp$1kbg$1@gioia.aioe.org>
In reply to#19583
"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio
news:5nkh8e5lnld7lldrle0hd9433tspev9b4d@4ax.com...

E' tutto ok, ma il comando per eseguire un file mi restituisce un errore.
Il percorso del sw e' "C:\Program Files (x86)\nome\nome64.exe"

Si', e' a 64 bit ma si trova dentro "C:\Program Files (x86)", dove e'
presente anche la versione 32 bit (nome.exe).

> Cmnd = "C:\Program Files (x86)\nome\nome64.exe"
>
> wshShell.Run (Cmnd ,1 ,True)

Mi restituisce "Impossibile utilizzare parentesi per la chiamata di routine
Sub"

Se uso:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run ("C:\Program Files (x86)\nome\nome64.exe" &
WScript.ScriptFullName)

Mi da' "Impossibile trovare il file specificato".

Idee?


[toc] | [prev] | [next] | [standalone]


#19582

From"Cerebus" <Cerebus@test.it>
Date2019-03-13 15:27 +0100
Message-ID<q6b400$18f6$1@gioia.aioe.org>
In reply to#19580
"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
news:5nkh8e5lnld7lldrle0hd9433tspev9b4d@4ax.com...

E' tutto ok, ma il comando per eseguire un file mi restituisce un errore.
Il percorso del sw e' "C:\Program Files (x86)\nome\nome64.exe"

Si', e' a 64 bit ma si trova dentro "C:\Program Files (x86)", dove e' 
presente anche la versione 32 bit (nome.exe).

> Cmnd = "C:\Program Files (x86)\nome\nome64.exe"
>
> wshShell.Run (Cmnd ,1 ,True)

Mi restituisce "Impossibile utilizzare parentesi per la chiamata di routine 
Sub"

Se uso:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run ("C:\Program Files (x86)\nome\nome64.exe" & 
WScript.ScriptFullName)

Mi da' "Impossibile trovare il file specificato".

Idee?

[toc] | [prev] | [next] | [standalone]


#19585

FromSB <stNOOObenevSPAM@tin.it>
Date2019-03-13 16:20 +0100
Message-ID<dl7i8edhgfnnkngkp5csjd457uj0sj15ik@4ax.com>
In reply to#19582
Il giorno Wed, 13 Mar 2019 15:27:10 +0100, "Cerebus" <Cerebus@test.it> ha
scritto:

>
>"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
>news:5nkh8e5lnld7lldrle0hd9433tspev9b4d@4ax.com...
>
>E' tutto ok, ma il comando per eseguire un file mi restituisce un errore.
>Il percorso del sw e' "C:\Program Files (x86)\nome\nome64.exe"
>
>Si', e' a 64 bit ma si trova dentro "C:\Program Files (x86)", dove e' 
>presente anche la versione 32 bit (nome.exe).
>
>> Cmnd = "C:\Program Files (x86)\nome\nome64.exe"
>>
>> wshShell.Run (Cmnd ,1 ,True)
>
>Mi restituisce "Impossibile utilizzare parentesi per la chiamata di routine 
>Sub"
>
>Se uso:
>
>Set objShell = WScript.CreateObject("WScript.Shell")
>objShell.Run ("C:\Program Files (x86)\nome\nome64.exe" & 
>WScript.ScriptFullName)
>
>Mi da' "Impossibile trovare il file specificato".

Se hai degli spazi all'interno della stringa di comando, .Run va in errore, devi
mettere le " anche all'esterno.

In particolare se hai questa stringa:

Cmnd = "C:\Program Files (x86)\nome\nome64.exe"

deve diventare così:

Cmnd = Chr(34) & "C:\Program Files (x86)\nome\nome64.exe" & Chr(34)


-- 
ciao
  Stefano

[toc] | [prev] | [next] | [standalone]


#19586

From"Cerebus" <Cerebus@test.it>
Date2019-03-13 17:00 +0100
Message-ID<q6b9ep$34o$1@gioia.aioe.org>
In reply to#19585
"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
news:dl7i8edhgfnnkngkp5csjd457uj0sj15ik@4ax.com...

> deve diventare così:

Risolto. Accidenti, grazie... :)

Ok, mi hai risolto un grande problema, ma me ne hai "creato" un altro :) :)
Nel senso che adesso funziona tutto *dentro* il VBS e non ho piu' bisogno di 
usare il batch, ma il batch mi cancellava alcuni files e directory.

Ho cercato di farlo anche in VBS ma e' il solito "delirio"... devi definire 
l'oggetto, etc.
Ho paura di fare casino senza volerlo, stavolta.

Io devo cancellare due files in programdata/nome e poi rimuovere la dir 
programdata\nome\altronome

In batch:

del C:\ProgramData\nome\nomefile.txt
del C:\ProgramData\nome\nomefile2.txt
del C:\ProgramData\nome\altronome\*.* /q
rd C:\ProgramData\nome\altronome

Tutto questo PRIMA del cambio della chiave di registro.

Tanta semplicita' anni 80 diventa per me un ostacolo in VBS... :(

[toc] | [prev] | [next] | [standalone]


#19587

FromSB <stNOOObenevSPAM@tin.it>
Date2019-03-13 17:19 +0100
Message-ID<auai8epqrui12jo18mi2porpshadjhqoc7@4ax.com>
In reply to#19586
Il giorno Wed, 13 Mar 2019 17:00:23 +0100, "Cerebus" <Cerebus@test.it> ha
scritto:

>
>"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
>news:dl7i8edhgfnnkngkp5csjd457uj0sj15ik@4ax.com...
>
>> deve diventare cos?
>
>Risolto. Accidenti, grazie... :)
>
>Ok, mi hai risolto un grande problema, ma me ne hai "creato" un altro :) :)
>Nel senso che adesso funziona tutto *dentro* il VBS e non ho piu' bisogno di 
>usare il batch, ma il batch mi cancellava alcuni files e directory.
>
>Ho cercato di farlo anche in VBS ma e' il solito "delirio"... devi definire 
>l'oggetto, etc.
>Ho paura di fare casino senza volerlo, stavolta.
>
>Io devo cancellare due files in programdata/nome e poi rimuovere la dir 
>programdata\nome\altronome
>
>In batch:
>
>del C:\ProgramData\nome\nomefile.txt
>del C:\ProgramData\nome\nomefile2.txt
>del C:\ProgramData\nome\altronome\*.* /q
>rd C:\ProgramData\nome\altronome
>
>Tutto questo PRIMA del cambio della chiave di registro.
>
>Tanta semplicita' anni 80 diventa per me un ostacolo in VBS... :(

Puoi seguire due strade:
usi il Fso

FileName = "C:\ProgramData\nome\nomefile.txt"

  Set Fso = CreateObject("Scripting.FileSystemObject")

  If Fso.FileExists(FileName) Then Fso.DeleteFile FileName, True	

oppure, se ti trovi meglio con il dos, puoi invocare un comando direttamente da
Shell:


CommandLine = "Del  C:\ProgramData\nome\nomefile.txt"
oShell.Run "command.com /k " & CommandLine



-- 
ciao
  Stefano

[toc] | [prev] | [next] | [standalone]


#19588

From"Cerebus" <Cerebus@test.it>
Date2019-03-13 17:23 +0100
Message-ID<q6barb$9v7$1@gioia.aioe.org>
In reply to#19587
"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
news:auai8epqrui12jo18mi2porpshadjhqoc7@4ax.com...

> Puoi seguire due strade:
> usi il Fso

Si, stavo giusto scrivendo che "c'ero riuscito" (leggi: ho copiato bene!)

Set obj = CreateObject("Scripting.FileSystemObject")
obj.DeleteFile("C:\1\prova.txt")
obj.DeleteFile("C:\1\prova1.txt")
obj.DeleteFile("C:\3\*.*")
obj.DeleteFolder("C:\3")

Grazie ancora per avermi aiutato...
Sono conscio che in VBS si fanno cose "miracolose" e dovrei approfondirlo 
ma... io mi fermo qui :)
Ciao. 

[toc] | [prev] | [next] | [standalone]


#19589

From"Cerebus" <Cerebus@test.it>
Date2019-03-13 17:49 +0100
Message-ID<q6bcak$gu9$1@gioia.aioe.org>
In reply to#19588
"Cerebus" <Cerebus@test.it> ha scritto nel messaggio 
news:q6barb$9v7$1@gioia.aioe.org...

> obj.DeleteFile("C:\3\*.*")

Si vabbe', ho sognato per 10 minuti. Scusami.
Non c'e' "*.*" in VBS :)

Hai anche ragione che avrei dovuto prima chiedere se il file esiste.

Ho quindi aggiunto "If then" e ora funziona anche se i file non sono 
presenti.

Rimane il fatto di dover rimuovere una directory che contiene vari file 
(estensione variabile).
Posso anche evitare di rimuovere la directory, ma i file devo toglierli.

Non posso definire a priori il file perche' sono files temporanei e sia il 
nome che l'estensione sono variabili.

[toc] | [prev] | [next] | [standalone]


#19590

FromSB <stNOOObenevSPAM@tin.it>
Date2019-03-13 18:02 +0100
Message-ID<sndi8e1ufe437vvumc5e3olrut4u72g65t@4ax.com>
In reply to#19589
Il giorno Wed, 13 Mar 2019 17:49:23 +0100, "Cerebus" <Cerebus@test.it> ha
scritto:


>Si vabbe', ho sognato per 10 minuti. Scusami.
>Non c'e' "*.*" in VBS :)

Chi l'ha detto, DeleteFile può contenere wildcards * o ?

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/deletefile-method


Poi alla fine fai DeleteFolder


-- 
ciao
  Stefano

[toc] | [prev] | [next] | [standalone]


#19591

From"Cerebus" <Cerebus@test.it>
Date2019-03-13 18:20 +0100
Message-ID<q6be4p$pek$1@gioia.aioe.org>
In reply to#19590
"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
news:sndi8e1ufe437vvumc5e3olrut4u72g65t@4ax.com...

> Chi l'ha detto, DeleteFile può contenere wildcards * o ?

Verissimo: mi dava errore perche' il nome dell'oggetto era sbagliato.
Grazie.


> Poi alla fine fai DeleteFolder

Anche qui, if exists then?
O si incazza se non trova il nome del folder?

Io lo metto... :)



[toc] | [prev] | [next] | [standalone]


#19592

FromSB <stNOOObenevSPAM@tin.it>
Date2019-03-13 18:24 +0100
Message-ID<t5fi8eh2eh62uejh5kjqheurv8e845afof@4ax.com>
In reply to#19591
Il giorno Wed, 13 Mar 2019 18:20:24 +0100, "Cerebus" <Cerebus@test.it> ha
scritto:

>
>"SB" <stNOOObenevSPAM@tin.it> ha scritto nel messaggio 
>news:sndi8e1ufe437vvumc5e3olrut4u72g65t@4ax.com...
>
>> Chi l'ha detto, DeleteFile pu?ntenere wildcards * o ?
>
>Verissimo: mi dava errore perche' il nome dell'oggetto era sbagliato.
>Grazie.
>
>
>> Poi alla fine fai DeleteFolder
>
>Anche qui, if exists then?
>O si incazza se non trova il nome del folder?
>
>Io lo metto... :)

E' sempre meglio evitare errori

-- 
ciao
  Stefano

[toc] | [prev] | [next] | [standalone]


Page 1 of 2  [1] 2  Next page →

Back to top | Article view | it.comp.lang.visual-basic


csiph-web