Chi mi sa aiutare? Finestra di selezione file!

di
Anonimizzato26972
il
10 risposte

Chi mi sa aiutare? Finestra di selezione file!

Chi mi sa aiutare?
Ciao con questo codice apro una finestra di selezione file! Alla fine della procedura "script.bat" come posso far uscire una nuova finestra per salvare il file con nome?

<# : chooser.bat

@echo off
setlocal

for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"') do (


       setlocal EnableDelayedExpansion 
       if not exist "C:\multitooltemp\" (
       mkdir "C:\multitooltemp\"
       if "!errorlevel!" EQU "0" (
       @echo Cartella temporanea creata
       ) else (
       @echo Error while creating folder
       )
       ) else (
       @echo Folder already exists
       )

       XCOPY "%%~I" c:\multitooltemp /K /D /H /Y
       ren c:\multitooltemp\*. *.backup
       XCOPY c:\multitooltemp\*.backup "%systemdrive%\Documents and Settings\All Users\Desktop" /K /D /H /Y
       rd /s /q "c:\multitooltemp\"

cls

    start veicoli\system\editing.hta
    start /min /wait script.bat %%~I
    ren %%~I "File_Edited"
    exit



)
goto :EOF

: end Batch portion / begin PowerShell hybrid chimera #>

Add-Type -AssemblyName System.Windows.Forms
$f = new-object Windows.Forms.OpenFileDialog
$f.Filter = "Tutti i File (*.*)|*.*|File Binari (*.bin)|*.bin|File Ori (*.ori*)|*.ori*|File MOD (*.mod*)|*.mod*"
$f.ShowHelp = $true
$f.Multiselect = $false
[void]$f.ShowDialog()
if ($f.Multiselect) { $f.FileNames } else { $f.FileName }

10 Risposte

  • Re: Chi mi sa aiutare? Finestra di selezione file!

    E' da chiarire (nello script batch) se devi acquisire il nome del file da salvare (quale, semplice, input da tastiera della variabile da impiegare):
    https://ss64.com/nt/set.htm
    http://www.brescianet.com/appunti/infobase/dosbatch.ht
    https://stackoverflow.com/questions/29393561/windows-batch-script-to-get-filename-as-input-and-search-the-file-in-a-folder-lo
    https://stackoverflow.com/questions/1223721/in-windows-cmd-how-do-i-prompt-for-user-input-and-use-the-result-in-another-com
    o selezionare il file fra l'elenco contenuto nella directory:
    https://stackoverflow.com/questions/45809295/batch-file-read-file-names-from-a-directory-and-store-in-array
    https://stackoverflow.com/questions/23228983/batch-file-list-files-in-directory-only-filenames
    https://stackoverflow.com/questions/15885132/file-folder-chooser-dialog-from-a-windows-batch-script
    https://www.sevenforums.com/general-discussion/227876-search-multiple-files-copy-paste-new-folder-batch-file-software.html
  • Re: Chi mi sa aiutare? Finestra di selezione file!

    Mi spiego meglio!

    Stilando lo script sopra, in pratica quando lo apro mi esce una finestra, ed io seleziono il file desiderato, poi subito dopo il programmino apre il script.bat con il file desiderato (il file viene modificato da script.bat e sovrascritto) come posso far uscire una seconda finestra dove posso inserire il nome di salvataggio del file a fine procedura?
  • Re: Chi mi sa aiutare? Finestra di selezione file!

    Dal momento che impieghi il comando Start per attivare il file script.bat ed in questo (il file selezionato viene modificato e sovrascritto)
    puoi agire prima del comando
    
    start /min /wait script.bat %%~I
    
    acquisendo il nome del file di destinazione e passandolo, come ulteriore parametro, allo script.bat
    oppure inserisci direttamente la richiesta del nome del file nello script.bat.
  • Re: Chi mi sa aiutare? Finestra di selezione file!

    Mi sapresti dare una mano? Nell'inserire il comando?

    Eccoti lo script.bat
    
    @echo off
    
        setlocal enableextensions enabledelayedexpansion
    
        Rem Get a carriage return character
        set "CR=" & for /f %%a in ('copy /Z "%~f0" nul') do if not defined CR set "CR=%%a"
        rem The progress bar
        set "fill=[##########]"
    
        cls
    
        rem For each character in the fill
        for /l %%a in (2 1 11) do (
            rem Calculate the right part of the bar
            set "spaces=!fill:~%%a!"
    
            rem Output the left and right parts of the bar and carriage return
            <nul set/p ".=:::::: Elaborazione File in corso !fill:~0,%%a!!spaces:#= !!CR!"
    
        call veicoli\fiat\mjd8df\JREPL.BAT "\x34\x15\x31\x7B\x2E\xE0\x2D\x93\x2A\xF8\x29\xAB\x23\x28" "\x41\x19\x3D\xD8\x3D\xD8\x3D\xD8\x3D\xD8\x3A\x98\x2B\xF2" /XSEQ /M /F "%~1" /O "-"
    
            rem Pause for a second
            ping -n 2 "" > nul
        )
    
    
    taskkill /F /IM mshta.exe
    start veicoli\fiat\FIAT_mjd8df_DPFOFF\msg.vbs
    
    cls
    exit
    
  • Re: Chi mi sa aiutare? Finestra di selezione file!

    In script.bat una operazione di copia del file (riga per riga, con carriage return) avviene nell'istruzione:
    
    set "CR=" & for /f %%a in ('copy /Z "%~f0" nul') do if not defined CR set "CR=%%a"
    
    https://ss64.com/nt/copy.htm
    da considerare che ciò avviene in un ciclo su un insieme di file (istruzione FOR /F )
    https://ss64.com/nt/for_f.htm
    pertanto puoi visualizzare la variabile impiegata, ad esempio con:
    
    @echo %%a 
    
    quindi rinominare il file (richiedendone il nuovo nome) impiegando l'istruzione REN
    https://ss64.com/nt/ren.htm

    Da considerare che lo script.bat ha al suo interno ulteriori chiamate di cui solo tu hai conoscenza:
    
    call veicoli\fiat\mjd8df\JREPL.BAT ....
    
  • Re: Chi mi sa aiutare? Finestra di selezione file!

    Si ma io quando va a salvare il file finale vorrei che uscisse una finestra e che alla fine scelgo in quella finestra il nome del file...

    esempio


    come posso fare? scusami ma sto imparando la programmazione Batch ora e non ci capsico più di tanto...
  • Re: Chi mi sa aiutare? Finestra di selezione file!

    Guarda che Willy ti ha dato la risposta giusta. Che senso ha aprire una dialog in batch? A sto punto fai un eseguibile in C#

    Poi se vuoi puoi provare qualche barbatrucco tipo questo
    https://stackoverflow.com/questions/15885132/file-folder-chooser-dialog-from-a-windows-batch-script
  • Re: Chi mi sa aiutare? Finestra di selezione file!

    Ho già implementato tale codice nel primo post!
  • Re: Chi mi sa aiutare? Finestra di selezione file!

    Ho creato Save.bat
    
    <# : chooser.bat
    @echo off
    setlocal
    
    for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"') do (
        echo You chose %%~I
    )
    goto :EOF
    
    : end Batch portion / begin PowerShell hybrid chimera #>
    
    Add-Type -AssemblyName System.Windows.Forms
    $f = new-object Windows.Forms.SaveFileDialog
    $f.InitialDirectory = desktop
    $f.Filter = "Tutti i File (*.*)|*.*|File Binari (*.bin)|*.bin|File Ori (*.ori*)|*.ori*|File MOD (*.mod*)|*.mod*"
    $f.ShowHelp = $true
    $f.Multiselect = $false
    [void]$f.ShowDialog()
    if ($f.Multiselect) { $f.FileNames } else { $f.FileName }
    
    Come posso generare un nuovo File con un nome? Aggiungendo a Select.bat
    start /min /wait veicoli\fiat\FIAT_mjd6f3_DPFOFF\save.bat %%~I
  • Re: Chi mi sa aiutare? Finestra di selezione file!

    Il codice da te impostato effettua una selezione di un file quindi non puoi impiegarlo come interfaccia per assegnare un nuovo nome (in quanto il file deve esistere) quindi può essere utilizzato ad esempio per il file che hai generato che deve essere l'origine dati.
    Da considerare, comunque, che selezionando il file tramite interfaccia grafica è possibile direttamente (in questa) anche rinominarlo.
    Si ricorda che quando si opera con uno script questo va pensato per una attività batch e dovrebbe essere limitata l'interattività con l'utente.
    In generale qualora si debba chiedere una variabile (all'utente) questa può essere impostata per essere sfruttata all'interno del batch.
    Per darti una traccia ho modificato il tuo esempio inserendo l'acquisizione (da tastiera richiesta all'utente) di una variabile (NomeFile) che verrà poi impiegata (dopo aver selezionato il file origine a mezzo interfaccia grafica nel folder) per rinominare il file selezionato con il nome impostato.
    
    <# : chooser.bat
    :: launches a File... Open sort of file chooser and outputs choice(s) to the console
    :: https://stackoverflow.com/a/15885133/1683264
    @echo off
    
    cls
    set /p NomeFile="Specificare il nuovo nome al file: "
    echo '%NomeFile%'
    
    setlocal
    for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"') do (
    	echo You chose %%~I
    	rename  %%~I %NomeFile%
    )
    goto :EOF
    
    : end Batch portion / begin PowerShell hybrid chimera #>
    
    Add-Type -AssemblyName System.Windows.Forms
    $f = new-object Windows.Forms.OpenFileDialog
    $f.InitialDirectory = pwd
    $f.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*"
    $f.ShowHelp = $true
    $f.Multiselect = $true
    [void]$f.ShowDialog()
    if ($f.Multiselect) { $f.FileNames } else { $f.FileName }
    
Devi accedere o registrarti per scrivere nel forum
10 risposte