我正在尝试从 Windows 批处理脚本中获取基于 gui 的保存文件作为对话框。我想在保存和取消按钮的左侧有一个新的文件夹按钮。没有预定义的文件类型。所以它可能必须设置为所有文件。
与此类似的东西:
(忽略左上角的按钮)
我从最佳答案中找到了一个很好的解决方案,用于在此处打开文件: Windows 批处理脚本中的文件/文件夹选择器对话框
为另存为对话框提供类似的解决方案会很好。最重要的是,我希望能够将路径和文件名设置为他们自己的变量。出于示例的目的或目的。我们可以插入“Hello World”作为输出。
示例:
echo Hello World > %variable.path%%variable.file%
下面的示例是链接帖子的直接引用。
:: 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
我试图调整上面的例子来保存为。但我不太了解这样做。这就是为什么我首先使用批处理脚本而不是功能更强大的编程语言的原因。
我对上述内容的理解是,它是调用 PowerShell(如果存在)或 PowerShell 不存在 .net(如果存在)的 Windows 批处理脚本。然后,如果两者都不存在,我将让它使用我现有的代码作为替代。替代方案只是让用户手动输入完整路径。
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
我会问现有的职位。但这在网站规则中是不允许的。所以我分开问。欢迎任何帮助或见解。
感谢您的时间和精力。