[script cmd] Editare file e inserimento variabile registro

"Null reference exception"? no, grazie, prendo un "unexpected T_VARIABLE"... Questo è il forum per imparare l'arte della programmazione o per chiedere un parere su una sessione di debug particolarmente ostica.
Regole del forum
Ricorda di indicare chiaramente nell'oggetto il linguaggio ([C#] oppure [PHP], [Java], [HTML], ...), se la discussione ne riguarda uno in particolare!
Rispondi
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 12479
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

[script cmd] Editare file e inserimento variabile registro

Messaggio da crazy.cat »

Ho bisogno di fare due cose tramite script cmd che si avvia in esecuzione automatica.
La prima, e più importante, è di modificare tramite notepad un file che ha una lettera accentata nel nome, quindi notepad turbolàb.ini e non riesco perché la lettera accentata viene interpretata in modo errato.
Non posso rinominare il file perché appartiene ad un programma, devo modificare una riga e inserire il nome del computer.

La seconda cosa è che vorrei mi chiedesse di inserire la descrizione del computer, quindi una variabile sempre diversa e l'andasse poi a salvare nel registro di configurazione al posto giusto.
Devo ancora cercare dove si trova nel registro, ma questa è una cosa secondaria per il momento.

Qualche idea?
In particolare per la prima cosa.
Grazie
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: [script cmd] Editare file e inserimento variabile registro

Messaggio da System » gio mag 09, 2013 9:56 am


Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

va bene anche in windows script host? la riga devi aggiungerla all'inizio? alla fine? al posto del testo presente?
Keep calm and do the Harlem
Filippo
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 12479
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da crazy.cat »

La riga è questa
WorkstationName=DA_CAMBIARE

Il Da_CAMBIARE deve prendere il nome computer, si trova nella seconda riga di quel file.

Se posso richiamare il vbs dal mio script cmd va benissimo.
Il cmd deve fare anche altre cose quindi non posso rinunciarci.
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

Ok va bene..per aprire il file nessun broblema..il vbs lo puoi lo puoi richiamare senza problemi dal tuo cmd

la questione è come fare il replace di DA_CAMBIARE che presumo assuma sempre un valore diverso. Se fosse sempre allo stessa riga ( ad esempio riaga 4 ) eventualmente si può pensare di riscrivere la strigna da codice nel senso che il vbs scriva direttamente WorkstationName=valore_da_scrivere
Keep calm and do the Harlem
Filippo
Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

Prova così:

File vbs da richiamare nel tuo cmd. Ovviamente devi sistemare i percorsi del file ini

Codice: Seleziona tutto

set objFSO = CreateObject( "Scripting.FileSystemObject" )
set objFile = objFSO.GetFile( "C:\temp\turbolàb.ini" )

If objFile.Size > 0 Then	' se il file è vuoto
    
	ls_input = InputBox( "Inserisci il nome del computer:" )	' casella per inserimento nome del pc
	
	if ls_input > "" then
	
		ls_new = ""
		set objReadFile = objFSO.OpenTextFile( "C:\temp\turbolàb.ini", 1 )	' apro il file in lettura
		
		do until objReadFile.AtEndOfStream	' leggo riga per riga e metto in una stringa il nuovo output
			
			ls_riga = objReadFile.ReadLine
			
			if InStr( ls_riga, "WorkstationName" ) > 0 Then
				ls_new = ls_new + "WorkstationName=" + ls_input + vbcrlf
			else
				ls_new = ls_new + ls_riga + vbcrlf
			end if 
			
		loop
		
		objReadFile.Close	' chiudo il file
		
		set objWriteFile = objFSO.OpenTextFile( "C:\temp\turbolàb.ini", 2 )	' riapro il file e ci scrivo il nuovo output
		objWriteFile.write( ls_new )
		objWriteFile.close
		
	else
		Wscript.Echo "Nome del computer non inserito!"
	end if
	
Else
    Wscript.Echo "Il file è vuoto"
End If
Io l'ho provato con questo file di testo:

Codice: Seleziona tutto

Riga 1
WorkstationName=DA_CAMBIARE
Riga 3
Riga 4
Keep calm and do the Harlem
Filippo
Avatar utente
hashcat
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1946
Iscritto il: gio mag 02, 2013 4:13 pm

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da hashcat »

Venerdi' o Sabato provo a scrivere lo script in batch.
“The quieter you become, the more you can hear”
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 12479
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da crazy.cat »

rumez ha scritto:Prova così:
E direi che già funziona molto bene.

Se volessi ripetere il ciclo If ls_input > "" then più volte per tutti i file che devo modificare è una cosa fattibile?
Invece di aprire più volte notepad a questo punto provo a modificarlo tramite questo script.

Nella riga qui sotto, il 2 tra parentesi indica dove deve inserire il nome del computer che ho scritto nel box?
set objWriteFile = objFSO.OpenTextFile( "C:\temp\turbolàb.ini", 2 ) ' riapro il file e ci scrivo il nuovo output
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

crazy.cat ha scritto: Se volessi ripetere il ciclo If ls_input > "" then più volte per tutti i file che devo modificare è una cosa fattibile?
Invece di aprire più volte notepad a questo punto provo a modificarlo tramite questo script.
Come avrai notato lo script apre un singolo file specificandolo nel codice. Bisogna eseguire lo script per ogni file. Ma qui mi devi dare altre info..ci sono solo file .ini nella cartella? hai un numero fisso di file ognuno con un nome specifico?
crazy.cat ha scritto: Nella riga qui sotto, il 2 tra parentesi indica dove deve inserire il nome del computer che ho scritto nel box?
set objWriteFile = objFSO.OpenTextFile( "C:\temp\turbolàb.ini", 2 ) ' riapro il file e ci scrivo il nuovo output
Il gioco è il seguente:
1) Il file viene aperto una prima volta in lettura ( parametro 1 ) e letto riga per riga; man mano che leggo una riga mi salvo il suo contenuto in una variabie ls_new.
Es: se leggo "Questa è la prima riga" in ls_new ci sarà scritto "Questa è la prima riga"
Al secondo giro ci accodo quanto trovo nella seconda riga e via dicendo fino alla fine del file.

2) Quando trovo la riga con al suo interno la dicitura "WorkstationName=" invece di salvarmi in ls_new il contenuto originale della riga ci scrivo "WorkstationName=nome-del-compiter"

3) Così facendo quando ho letto tutte le righe dentro la variabile ls_new ho esattamente il testo "finito" che dovrà essere presente nel file ini.

4) Alla fine del giro apro il file in scrittura ( parametro 2 ) e ci sostituisco il contenuto con quanto presente dentro la variabile ls_new
Keep calm and do the Harlem
Filippo
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 12479
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da crazy.cat »

Sono tutti file ini ma si trovano in diverse cartelle, ti rispondo in maniera più dettagliata domani così controllo anche in quali righe si trova la variabile da modificare.
Intanto grazie.
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

Ok perfetto. Sicuramente non sarà agevolissimo andarli a cercare in più cartelle però in qualche modo faremo
Keep calm and do the Harlem
Filippo
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 12479
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da crazy.cat »

I file da cambiare son 5, in 4 è sulla riga numero 2 e nell'ultimo alla riga 23. La variabile è sempre la stessa.
Uno è in una cartella pippo, due sono nella cartella pluto e altri due sono in una sottocartella di pluto.
Se ti faccio impazzire lascia stare.
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

In che riga si trovano effettivamente non è un problema. Se sono sempre quei 5 file e sempre in quelle 3 cartelle facciamo una cosa ad hoc. Per lunedì dovrei riuscire a preparartelo..è troppo tardi?
Keep calm and do the Harlem
Filippo
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 12479
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da crazy.cat »

I file sono sempre gli stessi e anche le cartelle.
Non ho nessuna fretta è solo per evitare una scocciatura di dover sempre aprire gli stessi file per fare le modifiche ogni volta che installo un pc nuovo.
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

E' stato più semplice del previsto. Ecco qui:

Codice: Seleziona tutto

ls_file = "C:\pippo\turbolàb.ini"
setWorkstationName( ls_file )

ls_file = "C:\pluto\turbolàb.ini"
setWorkstationName( ls_file )

ls_file = "C:\pluto\turbolàb.ini"
setWorkstationName( ls_file )

ls_file = "C:\pluto\subfolder_1\turbolàb.ini"
setWorkstationName( ls_file )

ls_file = "C:\pluto\subfolder_1\turbolàb.ini"
setWorkstationName( ls_file )

' ==================================
'	FUNZIONE DI AGGIORNAMENTO FILE
' ==================================
sub setWorkstationName( as_file )

	set objFSO = CreateObject( "Scripting.FileSystemObject" )
	set objFile = objFSO.GetFile( as_file )

	if objFile.Size > 0 Then	' se il file è vuoto
		
		ls_input = InputBox( "Inserisci il nome del computer:", "Modifica file " + as_file )	' casella per inserimento nome del pc
		
		if ls_input > "" then
		
			ls_new = ""
			set objReadFile = objFSO.OpenTextFile( as_file, 1 )	' apro il file in lettura
			
			do until objReadFile.AtendOfStream	' leggo riga per riga e metto in una stringa il nuovo output
				
				ls_riga = objReadFile.ReadLine
				
				if InStr( ls_riga, "WorkstationName" ) > 0 Then
					ls_new = ls_new + "WorkstationName=" + ls_input + vbcrlf
				else
					ls_new = ls_new + ls_riga + vbcrlf
				end if 
				
			loop
			
			objReadFile.Close	' chiudo il file
			
			set objWriteFile = objFSO.OpenTextFile( as_file, 2 )	' riapro il file e ci scrivo il nuovo output
			objWriteFile.write( ls_new )
			objWriteFile.close
			
		else
			Wscript.Echo "Nome del computer non inserito!"
		end if
		
	else
		Wscript.Echo "Il file è vuoto"
	end if
	
end sub
La parte che ti interessa è questa:

Codice: Seleziona tutto

ls_file = "C:\pippo\turbolàb.ini"
setWorkstationName( ls_file )

ls_file = "C:\pluto\turbolàb.ini"
setWorkstationName( ls_file )

ls_file = "C:\pluto\turbolàb.ini"
setWorkstationName( ls_file )

ls_file = "C:\pluto\subfolder_1\turbolàb.ini"
setWorkstationName( ls_file )

ls_file = "C:\pluto\subfolder_1\turbolàb.ini"
setWorkstationName( ls_file )
Praticamente puoi ripeterla quante volte vuoi. Basta che specifichi i percorsi dei file. Poi la funzione "setWorkstationName" fa tutto lei da sola.

Ora resta la scrittura nel registro..
Keep calm and do the Harlem
Filippo
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 12479
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da crazy.cat »

Al posto di subfolder_1 devo mettere il nome esatto della cartella?
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

esatto..per ogni file che devi modificare fai

Codice: Seleziona tutto

ls_file = "il percorso del tuo file"
e poi richiami la dicitura:

Codice: Seleziona tutto

setWorkstationName( ls_file )
Io questa procedura l'ho messa 5 volte per adattarla al tuo caso..ma puoi eseguira quante volte vuoi..1, 10, 100
Keep calm and do the Harlem
Filippo
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 12479
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da crazy.cat »

Funzionerebbe, però devo reinserire il nome del computer per 5 volte.
Non ne basterebbe una sola?
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

perché pensavo che avesse una finalità diversa :D

se deve essere sempre lo stesso nome usa questo codice per creare il vbs:

Codice: Seleziona tutto

ls_input = InputBox( "Inserisci il nome del computer:" )	' casella per inserimento nome del pc

if ls_input > "" then

	ls_file = "C:\pippo\turbolàb.ini"
	setWorkstationName ls_file, ls_input

	ls_file = "C:\pluto\turbolàb.ini"
	setWorkstationName ls_file, ls_input

	ls_file = "C:\pluto\turbolàb.ini"
	setWorkstationName ls_file, ls_input

	ls_file = "C:\pluto\subfolder_1\turbolàb.ini"
	setWorkstationName ls_file, ls_input

	ls_file = "C:\pluto\subfolder_1\turbolàb.ini"
	setWorkstationName ls_file, ls_input

else
	Wscript.Echo "Nome del computer non inserito!"
end if

' ==================================
'	FUNZIONE DI AGGIORNAMENTO FILE
' ==================================
sub setWorkstationName( as_file, as_input )

	set objFSO = CreateObject( "Scripting.FileSystemObject" )
	set objFile = objFSO.GetFile( as_file )

	if objFile.Size > 0 Then	' se il file è vuoto		
		
		ls_new = ""
		set objReadFile = objFSO.OpenTextFile( as_file, 1 )	' apro il file in lettura
		
		do until objReadFile.AtendOfStream	' leggo riga per riga e metto in una stringa il nuovo output
			
			ls_riga = objReadFile.ReadLine
			
			if InStr( ls_riga, "WorkstationName" ) > 0 Then
				ls_new = ls_new + "WorkstationName=" + as_input + vbcrlf
			else
				ls_new = ls_new + ls_riga + vbcrlf
			end if 
			
		loop
		
		objReadFile.Close	' chiudo il file
		
		set objWriteFile = objFSO.OpenTextFile( as_file, 2 )	' riapro il file e ci scrivo il nuovo output
		objWriteFile.write( ls_new )
		objWriteFile.close		
		
	else
		Wscript.Echo "Il file è vuoto"
	end if
	
end sub
Keep calm and do the Harlem
Filippo
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 12479
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da crazy.cat »

Funziona perfettamente.
Grazie
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

Ottimo!
Keep calm and do the Harlem
Filippo
Avatar utente
Al3x
Amministratore
Amministratore
Messaggi: 4542
Iscritto il: mer mag 01, 2013 12:59 pm
Località: http://127.0.0.1

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da Al3x »

rumez ha scritto:Ok perfetto. Sicuramente non sarà agevolissimo andarli a cercare in più cartelle però in qualche modo faremo
se hanno nomi differenti non basta aggiungere i loro percorsi alla variabile "path"? In quel modo nel codice potresti omettere le directory in cui si trovano
I :amore Sasha
Avatar utente
rumez
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 301
Iscritto il: ven mag 03, 2013 2:24 pm
Località: Montegrotto Terme

Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da rumez »

si beh..volendo si può ottimizzare
Keep calm and do the Harlem
Filippo
System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: Re: [script cmd] Editare file e inserimento variabile regist

Messaggio da System » sab mag 11, 2013 10:00 am


Rispondi
  • Argomenti simili
    Risposte
    Visite
    Ultimo messaggio