MS-DOS serie di comandi

di il
23 risposte

MS-DOS serie di comandi

Buongiorno ragazzi! Ho cercato una discussione ufficiale su DOS ma non ho trovato niente a riguardo.
Vorrei scrivere un file .bat, un pò per diletto a dire il vero in quanto mi sono appena approcciato al mondo della programmazione.

Adesso avrei bisogno principalmente di 2 aiuti.

1) Ho bisogno di copiare ciò che mi resitituisce il comando (su dos)
echo %USERDOMAIN%
Ovvero il nome-computer.

2) Tale nome PC lo devo inserire (o meglio sostituire) in una riga specifica di un file exe.config di un applicativo (tutto da Dos)
Questa operazione ho già cercato in rete e ho capito che non è così banale da effettuare.

Qualcuno che mi venga in soccorso?

23 Risposte

  • Re: MS-DOS serie di comandi

    Con le funzioni messe a disposizione da cmd.exe non si possono fare cose cosi' complicate in modo non eccessivamente complicato.

    Devi usare la bash (+ sed e/o awk) per Windows o PowerShell.
  • Re: MS-DOS serie di comandi

    Oddio.. Si può fare, con un minimo di fantasia
  • Re: MS-DOS serie di comandi

    Ma perché farsi venire il mal di testa quando puoi farlo molto più semplicemente in vbscript o con altro linguaggio di scripting un minimo più efficiente?

    Ma poi, per modificare un SOLO file, perché non utilizzi un editor e basta?
  • Re: MS-DOS serie di comandi

    oregon ha scritto:


    Ma perché farsi venire il mal di testa quando puoi farlo molto più semplicemente in vbscript o con altro linguaggio di scripting un minimo più efficiente?

    Ma poi, per modificare un SOLO file, perché non utilizzi un editor e basta?
    In realtà non ho intenzione di farmi venire il mal di testa
    Era curioso se si potesse fare direttamente tramite un file .bat e quindi con dos... Comunque il mio scopo non era modificare solo un file, ma creare uno script che potesse modificare quel singolo file su diverse macchine (e quindi con nome-computer differente)
  • Re: MS-DOS serie di comandi

    Puoi fare due tecniche
    replace
    Redireziona e cat-ta
  • Re: MS-DOS serie di comandi

    Perché questa fissazione con il .bat se esistono altre modalità per realizzare quello che vuoi?

    C'è qualcosa che non sappiamo o che non vuoi dirci?

    Perché un bat per modificare un file di configurazione?
  • Re: MS-DOS serie di comandi

    No in realtà perchè mi sembra il metodo più veloce. Cosa consiglieresti senò?

    Comunque ho trovato il metodo bastava semplicente usare il comando
    echo %USERDOMAIN% >> C:\file.txt
    e ha stampanto il nome-computer. (senza copiare nulla)

    Ora mi serve arrivare alla riga di comando corretta nel file.txt per inserirlo lì ma non sò se si può fare con il .bat
  • Re: MS-DOS serie di comandi

    powerf ha scritto:


    No in realtà perchè mi sembra il metodo più veloce. Cosa consiglieresti senò?

    Comunque ho trovato il metodo bastava semplicente usare il comando
    echo %USERDOMAIN% >> C:\file.txt
    e ha stampanto il nome-computer.

    Ora mi serve arrivare alla riga di comando corretta nel file.txt ma non sò se si può fare con il .bat
    Certo che si può fare, in due modi.

    1) cerca e sostituisci. Il modo più rapido. scaricati il programmello FART (come le scorregge). Oppure usa FIND
    2) fai 3 pezzi dello script
    header
    quello che ti serve
    footer
    poi li collazioni con un copy (insomma li accodi, su *nix faresti cat) col + et voilà ottieni un singolo file
  • Re: MS-DOS serie di comandi

    +m2+ ha scritto:


    powerf ha scritto:


    No in realtà perchè mi sembra il metodo più veloce. Cosa consiglieresti senò?

    Comunque ho trovato il metodo bastava semplicente usare il comando
    echo %USERDOMAIN% >> C:\file.txt
    e ha stampanto il nome-computer.

    Ora mi serve arrivare alla riga di comando corretta nel file.txt ma non sò se si può fare con il .bat
    Certo che si può fare, in due modi.

    1) cerca e sostituisci. Il modo più rapido. scaricati il programmello FART (come le scorregge). Oppure usa FIND
    2) fai 3 pezzi dello script
    header
    quello che ti serve
    footer
    poi li collazioni con un copy (insomma li accodi, su *nix faresti cat) col + et voilà ottieni un singolo file
    1) Con Find riesco a trovarlo ma non riesco a sostituire con l' %USERDOMAIN%
  • Re: MS-DOS serie di comandi

    In realtà %USERDOMAIN% restituisce il nome dominio del computer (che può combaciare con il nome ma non è detto).

    Dovresti usare %COMPUTERNAME%
  • Re: MS-DOS serie di comandi

    +m2+ ha scritto:


    powerf ha scritto:


    No in realtà perchè mi sembra il metodo più veloce. Cosa consiglieresti senò?

    Comunque ho trovato il metodo bastava semplicente usare il comando
    echo %USERDOMAIN% >> C:\file.txt
    e ha stampanto il nome-computer.

    Ora mi serve arrivare alla riga di comando corretta nel file.txt ma non sò se si può fare con il .bat
    Certo che si può fare, in due modi.

    1) cerca e sostituisci. Il modo più rapido. scaricati il programmello FART (come le scorregge). Oppure usa FIND
    2) fai 3 pezzi dello script
    header
    quello che ti serve
    footer
    poi li collazioni con un copy (insomma li accodi, su *nix faresti cat) col + et voilà ottieni un singolo file
    Ho provato anche la tua seconda idea che effettivamente poteva essere una buona escamotage. Però non hai calcolato una cosa: il pezzo di testo che devo aggiungere in realtà è un "echo %USERDOMAIN% (o %COMPUTERNAME% come suggerito da @oregon).
    Con il copy+copy+copy nella parte centrale (ovvero il mio testo) non mi stampa l'userdomain (che dovrebbe essere "DESKTOP-XXXXX") ma mi stampa proprio "echo %USERDOMAIN". Quindi progetto fallito

    Fart lo escludo (anche se è l'unico che ha funzionato per ora) per 2 motivi:
    1) Deve essere utilizzato Windows così com'è senza aggiunta di altri tool (perchè lo script lo dovrò usare su molti altri pc e non posso installare "fart" su tutti)

    2) Non posso conoscere il nome computer di tutto i pc. Quindi devo creare un file che vada bene per tutte le macchine e quindi più che andare a sostituire, penso che sarebbe meglio cancellare il nome PC dal file originale e aggiungere quello corrispondente ad ogni macchina con "echo %COMPUTERNAME%" in qualche modo che ancora mi è ignoto.

    Morale della favola: O si trova un modo per perfezionare la soluzione n°2 che mi avevi proposto con la quale mi sono avvicinato molto alla risoluzione o si trova un modo per arrivare in un punto preciso del file di testo e si aggiunge il testo da lì. Con "find" non ci sono riuscito. Forse però ho sbagliato qualcosa...
  • Re: MS-DOS serie di comandi

    Hai un esempio reale di file di testo in cui devi sostituire il testo?

    Se non funziona con un bat perché non con un vbs che funziona su tutti i pc?
  • Re: MS-DOS serie di comandi

    oregon ha scritto:


    Hai un esempio reale di file di testo in cui devi sostituire il testo?

    Se non funziona con un bat perché non con un vbs che funziona su tutti i pc?
    Una parte di file.txt (in realtà è un .config) è la seguente:
    
        </configSections>
        <connectionStrings>
            <add name="XXX.Properties.Settings.XXX_DB" connectionString="Data Source=DESKTOP-TNNEDB9\DB;Initial Catalog=XXX_;Integrated Security=True"
                providerName="Systemt" />
        </connectionStrings>
    
    Fondamentalmente devo inserire il nome-computer subito dopo "Data Source=". Nel file originale c'è questo nome-computer generico (DESKTOP-TNNEDB9) che ora devo sostituire per ogni pc. La mia idea era di cancellarlo e generarlo attraverso un click di questo file.bat (prendendo in automatico il nome-computer). In realtà non è una necessità ma era anche per imparare ad un usare questo linguaggio.
    Come faresti con un vbs? (di cui non sò assolutamente nulla)
  • Re: MS-DOS serie di comandi

    Meglio ancora usare powershell. Ti basta una riga cambiando il nome e percorso del file
    
    powershell -Command "(Get-Content c:\temp\file.txt) -replace 'DESKTOP-TNNEDB9', $env:computername | Set-Content c:\temp\file.txt"
    
Devi accedere o registrarti per scrivere nel forum
23 risposte