Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.visual-basic > #19571 > unrolled thread
| Started by | "Cerebus" <Cerebus@test.it> |
|---|---|
| First post | 2019-03-11 17:44 +0100 |
| Last post | 2019-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
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 →
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-03-11 17:44 +0100 |
| Subject | Aggiungere 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]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2019-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]
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-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]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2019-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]
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-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]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2019-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]
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-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]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2019-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]
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-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]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2019-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]
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-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]
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-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]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2019-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]
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-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]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2019-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]
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-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]
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-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]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2019-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]
| From | "Cerebus" <Cerebus@test.it> |
|---|---|
| Date | 2019-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]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2019-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