AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1491854
Accepted
Bricktop
Bricktop
Asked: 2019-10-14 05:20:15 +0800 CST2019-10-14 05:20:15 +0800 CST 2019-10-14 05:20:15 +0800 CST

打开一个弹出窗口进行多项选择?

  • 772

我正在编写一个batch运行视频播放列表的脚本,一个一个地打开它们,并要求在视频之间采取行动。有没有办法打开一个弹出窗口进行多项选择?如果不采取任何操作,此弹出窗口应在几秒钟内关闭,以便播放列表可以继续。没有本地 Microsoft 命令行工具可以做到这一点,正在寻找解决方法。

batch popups
  • 2 2 个回答
  • 346 Views

2 个回答

  • Voted
  1. Albin
    2019-10-14T11:35:28+08:002019-10-14T11:35:28+08:00

    虽然可能没有“直接方式”,但有几种变通方法,例如执行time out主脚本,而第二个脚本执行用户查询。例如,第二个脚本可以将其结果写入文件(或者不写入,如果它被忽略)。超时后,第一个脚本继续评估结果(如果第二个脚本被忽略,则取消第二个脚本)。

    这一切都取决于您要用于批处理文件的命令终端类型,例如 powershell、cmd 或其他。这里有一些例子:

    • 这是在cmd中添加超时的方法

    • 这是在powershell中添加超时的方法

    • 1
  2. Best Answer
    Io-oI
    2021-09-10T23:01:23+08:002021-09-10T23:01:23+08:00

    在此处输入图像描述

    <# :^ Starting bat script and PowerShell comment 
    
    @echo off && cd /d "%~dp0" & color 0a 
    echo & setlocal EnableDelayedExpansion
    title Batch files and Powershell hybrids
    %__AppDir__%mode.com con:cols=080lines=009
    
    echo. & echo. hybrid .cmd/.bat ^& ps1  
    echo\=====================================
    
    for /f usebackq^tokens^=*delims^= %%i in (`
    set "_=0" ^& type "%~f0"^|powershell.exe -nOp -c -
       `)do 2>&1 (if "%%~i" == "[ Error 1 ]" (goto %:^| 
            )else if "%%~i" == "[ Error 2 ]" (goto %:^O 
            )else if "%%~i" == "[ Error 3 ]" (goto %:^V
            )else if "%%~i" == "[ Error 4 ]" (goto %:^?
            )else set/a "_+=1" && call %:^) !_! "%%~i")
    
    if !_! equ 0 goto %:^?
    endlocal & %__AppDir__%timeout.exe 01 | (
         echo/- The job is done!) & goto :eof 
    
    %:^|
    endlocal & %__AppDir__%timeout.exe 01 | (
         echo/- Canceled by user!) & goto :eof 
         
    %:^?
    endlocal & %__AppDir__%timeout.exe 01 | (
         echo/- Timeout reached!) & goto :eof 
    
    %:^)
    rem. ::  & %__AppDir__%timeout.exe 01 | (
    echo\Clicked Itens #%~1: "%~2") & exit /b
    
    %:^O
    endlocal & %__AppDir__%timeout.exe 01 | (
         echo\Nothing selected by user) & goto :eof
    
    %:^V
    endlocal & %__AppDir__%timeout.exe 01 | (
        echo\#Error: no \subfolders) & goto :eof
        
    :: End Bat Session and Starting PowerShell Script >" ::
    #>
    
    function SourceDirectory ([string]$Message,
        [string]$work_dir, [switch]$NoNewFolderButton )
    {
        $browseForFolderOptions = 0
        $browseForFolderOptions += 512
     
        $app = New-Object -ComObject Shell.Application
        $folder = $app.BrowseForFolder(0, $Message, $browseForFolderOptions, $work_dir)
        if ($folder) { $selectedDirectory = $folder.Self.Path } else { $selectedDirectory = '' }
        [System.Runtime.Interopservices.Marshal]::ReleaseComObject($app) > $null
        return $selectedDirectory
    }  
    
    $work_dir = Push-Location $PSScriptRoot
    
    Add-Type -AssemblyName System.Windows.Forms
    Add-Type -AssemblyName System.Drawing
    
    $form = New-Object System.Windows.Forms.Form
    $form.Text = 'Select Folders use Control'
    $form.Size = New-Object System.Drawing.Size(330,200)
    $form.StartPosition = 'CenterScreen'
    
    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Point(75,120)
    $OKButton.Size = New-Object System.Drawing.Size(75,23)
    $OKButton.Text = 'OK'
    $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
    $form.AcceptButton = $OKButton
    $form.Controls.Add($OKButton)
    
    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Point(150,120)
    $CancelButton.Size = New-Object System.Drawing.Size(75,23)
    $CancelButton.Text = 'Cancel'
    $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
    $form.CancelButton = $CancelButton
    $form.Controls.Add($CancelButton)
    
    $label = New-Object System.Windows.Forms.Label
    $label.Location = New-Object System.Drawing.Point(10,20)
    $label.Size = New-Object System.Drawing.Size(560,20)
    $label.Text = 'Please make a selection from the list below:'
    $form.Controls.Add($label)
                   
    $Global:timer = New-Object System.Windows.Forms.Timer
    $Global:EndDate = ((Get-Date).AddSeconds(+10)).ToString("mmss")
    $Global:timer.Add_Tick({ if ($EndDate -lt (Get-Date).ToString("mmss")) { 
                  $timer.Stop(); $form.Close(); Write-Host '[ Error 4 ]'}})
    
    $listBox = New-Object System.Windows.Forms.Listbox
    $listBox.Location = New-Object System.Drawing.Point(10,40)
    $listBox.Size = New-Object System.Drawing.Size(260,20)
    $listBox.SelectionMode = 'MultiExtended'
    
    [void] $listBox.Items.Remove('Item *')
    
     if ((ls -ad $work_dir).count -eq 0){'[ Error 3 ]'; break
        } else { ls -ad $work_dir | ? {[void] $listBox.Items.Add($_) } }
    
    $listBox.Height = 70
    $form.Controls.Add($listBox)
    $form.Topmost   = $true; 
    
    $timer.Start(); $result = $form.ShowDialog()
    
    if ($result -eq [System.Windows.Forms.DialogResult]::Cancel) {'[ Error 1 ]' ; break}
    if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
         if ($listBox.SelectedItems.Count -gt 0) { (resolve-path($listBox.SelectedItems) | 
             select -ExpandProperty Path )| % { $_ } } else {'[ Error 2 ]'; break} }
    
    Pop-Location ; exit

    在此处输入图像描述


    您可以将混合 bat 与powershell一起使用,并在互联网上可用的示例进行一些搜索。

    您可以快速调整它,使其最适合您的目标,并利用由此产生的学习并考虑迁移到powershell。

    下面是一个使用我几个月前制作的脚本的示例,该脚本通过多选/单击获取文件夹列表,我通过将输出添加到用户的以下操作来进行调整:

    • 选定项目
    • 未选择的项目
    • 取消点击/关闭
    • 超时 10 秒 // 如果没有操作

    在此处输入图像描述


    • Start-CountDownTimer.ps1
    • 多选列表框
    • powershell脚本中的取消按钮
    • Windows PowerShell 命令的 AZ 索引
    • 如何在 ps1 中添加计时器以在一定时间后退出表单
    • 1

相关问题

  • 从命令行计算具有特定扩展名 (.mp4) 的文件夹和子文件夹中的文件

  • Windows批处理文件最小化所有打开的窗口

  • Windows 批处理更改所有 IIS 应用程序池超时

  • 命令行:文件重命名的通用命令

  • Python 的“pass”参数的批处理等价物是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve