Sto cercando di ottenere un file di salvataggio basato su GUI come finestra di dialogo all'interno di uno script batch di Windows. Mi piacerebbe avere un nuovo pulsante di cartella a sinistra dei pulsanti Annulla &. Senza un tipo di file predefinito. Quindi probabilmente dovrebbe essere impostato su tutti i file.Finestra di dialogo Salva file con PowerShell/C# dal lotto cmd
Qualcosa di simile a questo:
(ignorare i pulsanti in alto a sinistra)
ho trovato un bel soloution, dalla risposta superiore, per l'apertura di un file qui: File/folder chooser dialog from a Windows batch script
Sarebbe bello avere una solitaria simile per una finestra di dialogo salva come. Soprattutto, mi piacerebbe che fosse possibile impostare il percorso con il nome file & nelle proprie variabili. Per lo scopo o il gusto dell'esempio. Potremmo inserire "Hello World" come output.
gratia exempli:
echo Hello World > %variable.path%%variable.file%
L'esempio che segue è una citazione diretta dal post collegato.
:: chooser.bat
:: launches a File... Open sort of file chooser and outputs choice to the console
@echo off
setlocal enabledelayedexpansion
:: Does powershell.exe exist within %PATH%?
for %%I in (powershell.exe) do if "%%~$PATH:I" neq "" (
set chooser=powershell "Add-Type -AssemblyName System.windows.forms|Out-Null;$f=New- Object System.Windows.Forms.OpenFileDialog;$f.InitialDirectory='%cd%';$f.Filter='Text Files (*.txt)|*.txt|All Files (*.*)|*.*';$f.showHelp=$true;$f.ShowDialog()|Out-Null;$f.FileName"
) else (
rem :: If not, compose and link C# application to open file browser dialog
set chooser=%temp%\chooser.exe
>"%temp%\c.cs" echo using System;using System.Windows.Forms;
>>"%temp%\c.cs" echo class dummy{
>>"%temp%\c.cs" echo public static void Main^(^){
>>"%temp%\c.cs" echo OpenFileDialog f=new OpenFileDialog^(^);
>>"%temp%\c.cs" echo f.InitialDirectory=Environment.CurrentDirectory;
>>"%temp%\c.cs" echo f.Filter="Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
>>"%temp%\c.cs" echo f.ShowHelp=true;
>>"%temp%\c.cs" echo f.ShowDialog^(^);
>>"%temp%\c.cs" echo Console.Write^(f.FileName^);}}
for /f "delims=" %%I in ('dir /b /s "%windir%\microsoft.net\*csc.exe"') do (
if not exist "!chooser!" "%%I" /nologo /out:"!chooser!" "%temp%\c.cs" 2>NUL
)
del "%temp%\c.cs"
if not exist "!chooser!" (
echo Error: Please install .NET 2.0 or newer, or install PowerShell.
goto :EOF
)
)
:: capture choice to a variable
for /f "delims=" %%I in ('%chooser%') do set "filename=%%I"
echo You chose %filename%
:: Clean up the mess
del "%temp%\chooser.exe" 2>NUL
goto :EOF
ho cercato di adattare l'esempio precedente a lavorare per salvare come. Ma non lo capisco abbastanza bene da farlo. È per questo che sto usando script in batch e non un linguaggio di programmazione funzionante in primo luogo.
La mia comprensione di quanto sopra è che si tratta di uno script batch di Windows che richiama PowerShell, se esiste o se PowerShell non esiste .net se esiste. Avrò quindi usare il mio codice esistente come alternativa se nessuno dei due esiste. Alternativa ha solo l'input dell'utente il percorso completo manualmente.
echo Set path to file:
echo Path and file cannot contain any spaces. e.g. c:\folder_name\file.ext
echo Be sure you include the filename.
SET /P path1=">"?
cls
echo path set to: %path1%
pause
cls
goto :eof
Avrei chiesto sul post esistente. Ma ciò non è consentito nelle regole del sito. Quindi ho chiesto separatamente. Qualsiasi aiuto o intuizione è il benvenuto.
Grazie per il vostro tempo & sforzo.
La mia soluzione è più breve, ho 2 domande: perché si incapsula il codice PowerShell nel codice CMD? Perché compili C# in PowerShell dove lo usi inline (Aggiungi-Tipo) o nel tuo caso usi semplicemente le classi .NET senza C#? – JPBlanc
Lo scopo di questo è di aprire una finestra di dialogo in uno script batch di Windows, un file .bat. Non sono io quello che ha cambiato l'intestazione in stato powershell e non in batch. I miei risultati sono quasi una copia diretta del codice che ho trovato, e citato qui, dal post collegato. Quindi per il bit C#. Non sono veramente sicuro. Ma mi piace avere una seconda alternativa funzionale. – Terus