【问题标题】:How to have batch file open File Browser to select a folder如何让批处理文件打开文件浏览器以选择文件夹
【发布时间】:2021-05-26 19:35:57
【问题描述】:

我对脚本完全陌生。下面是批处理文件中编写的代码示例:

@ECHO OFF
ECHO ----------------------------------------------------------------------------------------------------
SET /P URL="[Enter video URL] "
ECHO ----------------------------------------------------------------------------------------------------
goto formatList

:formatList
ECHO.
ECHO ----------------------------------------------------------------------------------------------------
youtube-dl -F %URL%
ECHO ----------------------------------------------------------------------------------------------------
goto selection

:selection
ECHO.
ECHO ----------------------------------------------------------------------------------------------------
ECHO a) Video + Audio
ECHO b) Single format (Audio only / Video only)
ECHO.
SET /P option="Select option: "
if %option% == a (goto download)
if %option% == b (goto downloadSingle)
ECHO.
ECHO Unknown value
ECHO ----------------------------------------------------------------------------------------------------
goto selection

:download
ECHO ----------------------------------------------------------------------------------------------------
ECHO.
ECHO ----------------------------------------------------------------------------------------------------
SET /P video="Select video format: "
SET /P audio="Select audio format: "
SET /P location="Specify download location: "
ECHO.
youtube-dl --write-sub --embed-subs -o %%location%%/%%(title)s.%%(ext)s -f %video%+%audio% -i --ignore-config --hls-prefer-native %URL% 
ECHO ----------------------------------------------------------------------------------------------------
ECHO.
PAUSE
EXIT

:downloadSingle
ECHO ----------------------------------------------------------------------------------------------------
ECHO.
ECHO ----------------------------------------------------------------------------------------------------
SET /P format="Select format: "
ECHO.
youtube-dl --write-sub --embed-subs -o %%location%%/%%(title)s.%%(ext)s -f %%format%% -i --ignore-config --hls-prefer-native %URL% 
ECHO ----------------------------------------------------------------------------------------------------
ECHO.
PAUSE
EXIT

如何不必通过 'SET /P location="Specify download location:"' 键入文件夹路径的地址,而是让批处理文件打开文件浏览器以选择一个文件夹并将其设置在 %location%变量。

非常感谢任何形式的帮助。

【问题讨论】:

  • 在纯批处理中最简单的方法是打开 explorer.exe 并使用 set /P 允许用户将文件拖放到控制台中以分配给变量。
  • 您可以使用另一种脚本语言来帮助您,PowerShell 和 Windows Scripting Host 都包含在 Windows 中,并且都可以从批处理文件中运行。但是对于你想要完成的任务,我可能会建议你去掉中间人,(删除批处理文件),直接在.JS.PS.VBS中完成。跨度>
  • 以后请考虑提供minimal reproducible example。我强调最小。您的大部分代码与您的问题无关。
  • 我很抱歉。指出的要点。

标签: batch-file directory


【解决方案1】:

这是一个将 vbscript 用于批处理文件的示例:

@echo off
Title Browse a Folder and select it
Call :BrowseFolder "Select the Source folder" "C:\Program"
Set "LocationFolder=%MyFolder%"
echo "%LocationFolder%"
Pause & Exit
::-----------------------------------------------------------
:BrowseFolder
    set MyFolder=
    set vbs="%temp%\_.vbs"
    set cmd="%temp%\_.cmd"
    >%vbs% echo set WshShell=CreateObject("WScript.Shell") 
    >>%vbs% echo set shell=CreateObject("Shell.Application") 
    >>%vbs% echo set f=shell.BrowseForFolder(0,%1,0,%2) 
    >>%vbs% echo if typename(f)="Nothing" Then  
    >>%vbs% echo wscript.echo "set MyFolder=Dialog Cancelled" 
    >>%vbs% echo WScript.Quit(1)
    >>%vbs% echo end if 
    >>%vbs% echo set fs=f.Items():set fi=fs.Item() 
    >>%vbs% echo p=fi.Path:wscript.echo "set MyFolder=" ^& p
    cscript //nologo %vbs% > %cmd%
    @for /f "delims=" %%a in (%cmd%) do %%a
    @for %%f in (%vbs% %cmd%) do if exist %%f del %%f
    @for %%g in ("vbs cmd") do if defined %%g set %%g=
Exit /B
::-----------------------------------------------------------

这是另一个带有 Powershell 和 Batch 的代码

:: fchooser.bat
:: launches a folder chooser and outputs choice to the console
:: https://stackoverflow.com/a/15885133/1683264

@echo off
Title Browse a Folder and select it with Powershell and Batch
setlocal
set "psCommand="(new-object -COM 'Shell.Application')^
.BrowseForFolder(0,'Please choose a folder.',0,0).self.path""
for /f "usebackq delims=" %%I in (`powershell %psCommand%`) do set "folder=%%I"
setlocal enabledelayedexpansion
echo You chose !folder!
pause
endlocal

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
相关资源
最近更新 更多