[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何调用/弹出文件或文件夹选择对话框

求助大神,用批处理如何调用资源管理器来选择文件或文件夹并将所选择的文件夹或者文件的路径赋值到批处理中,选择了文件夹或者文件后,能够将与之对应的路径捕捉到批处理代码中给后面的程序使用

回复 1# 懒得勤快

借助第三方工具

TOP

文件选择框
  1. <!-- :
  2. @echo off
  3. for /f "delims=" %%a in ('mshta "%~f0"') do echo;%%a
  4. pause&exit /b
  5. -->
  6. <input type=file id=f>
  7. <script>
  8. f.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(f.value);close();
  9. </script>
复制代码

TOP

本帖最后由 pcl_test 于 2016-7-12 17:39 编辑

文件夹选择框
  1. <!-- :
  2. @echo off
  3. for /f "delims=" %%a in ('mshta "%~f0"') do echo;%%a
  4. pause&exit /b
  5. -->
  6. <script>
  7. var Shell = new ActiveXObject("Shell.Application");
  8. var Folder = Shell.BrowseForFolder(0, "请选择文件夹", 0); //起始目录为:桌面
  9. if (Folder != null) {
  10.     Folder = Folder.items();
  11.     Folder = Folder.item();
  12.     Folder = Folder.Path;
  13.     new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder);
  14. }
  15. close();
  16. </script>
复制代码

TOP

回复 4# pcl_test


    版主好,能一个窗口,打开后可以进行文件夹和指定文件(如exe)选择么?谢谢

TOP

本帖最后由 pcl_test 于 2017-12-18 13:21 编辑

回复 5# yunyan100

试试

TOP

回复 6# pcl_test


    非常感谢,我试下先我发过一条我自己作的bat的功能码,因为在这学的,现在正在完善和功能改进,所以不好意思又要来请教你了,谢谢

TOP

本帖最后由 yunyan100 于 2017-12-15 11:44 编辑

回复 6# pcl_test

有点不对,这个没有显示出来,是这样的,是打开一个窗口,在里面可以显示我指定格式(如*.exe文件),也有文件夹,所以就是想能选择显示的文件和文件夹,目前我用的是选择文件夹,然后批处理里才来选择是否是文件还是文件夹,所以想有个可以一次选择是文件或者文件夹
你上面一个代码是文件夹,一个是文件,所以能否合到一起,且文件那里只显示指定格式的文件(如*.exe文件),第三小工具也成,因为是返回批处理的

TOP

回复 8# yunyan100

没懂你要的效果
一个窗口按选择,即可作为文件选择对话框也可作为文件夹选择对话框?

TOP

回复 9# pcl_test


不好意思,其实就是调用系统的选择窗口也可是第三方小软件(同时支持选择文件(设置的格式)和文件夹),目前基本是文件和文件分开的,我曾经用过一个软件,在选择它能加工的内容时
一个对话框可以选择指定的文件和文件夹,因为选择文件就一个,如果选择文件夹,后面的操作就是批量将文件夹里的指定文件操作
下面这个是我在网上收集的选择文件的,可以指定,就是想这种的同时也可以选择文件夹,以前有用了一软件的对话框,当我选择文件夹时,下面那个打开就变成了选择,即为同时可以选择文件和文件夹,
  1. @echo off
  2. setlocal
  3. for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"') do (
  4.     echo You chose %%~I
  5. )
  6. pause
  7. goto :EOF
  8. : end Batch portion / begin PowerShell hybrid chimera #>
  9. Add-Type -AssemblyName System.Windows.Forms
  10. $f = new-object Windows.Forms.OpenFileDialog
  11. $f.InitialDirectory = pwd
  12. $f.Filter = "Exe文件 (*.exe)|*.exe"
  13. $f.ShowHelp = $true
  14. $f.Multiselect = $true
  15. [void]$f.ShowDialog()
  16. if ($f.Multiselect) { $f.FileNames } else { $f.FileName }
复制代码

TOP

回复 10# yunyan100

已做了兼容处理

TOP

回复 11# pcl_test

    首先感谢 你的回复,还是有错,
win10x64错误
xp错误
我在win7里测试,可以选择指定的文件,如exe,文件夹(只支持指定目录下这级,不支持向下, 不过这个不算大问题了)也可以了,谢谢,我用win10了,可否支持?
我测试过用管理员权限,win10还是这个错误提示,

TOP

回复 11# pcl_test


    首先感谢你的帮助,win10的错误还是和之前一样,用了兼容模式也是提示那样,xp我装了net2.0可以了

TOP

回复 13# yunyan100

expl.exe.config里删除<supportedRuntime version="v2.0.50727"/>

TOP

本帖最后由 ivor 于 2017-12-18 14:43 编辑

代码转载于网络
批处理取返回值:
  1. @echo off
  2. set pscmdline='powershell.exe -file E:\python\ps.ps1'
  3. rem 取返回值%%a
  4. for /f %%a in (%pscmdline%) do (echo %%a)
复制代码
powershell
  1. function Select-FolderDialog
  2. {
  3. param([string]$Directory,[string]$Description,[boolean]$ShowNewFolderButton)
  4. [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
  5. $objForm = New-Object System.Windows.Forms.FolderBrowserDialog
  6. $objForm.RootFolder = $Directory
  7. $objForm.Description = $Description
  8. $objForm.ShowNewFolderButton = $ShowNewFolderButton
  9. $Show = $objForm.ShowDialog()
  10. If ($Show -eq "OK")
  11. {
  12. #确定按钮代码块
  13. Return $objForm.SelectedPath
  14. }
  15. Else
  16. {
  17. #需要输出错误信息的话可以取消下一行的注释
  18. #取消按钮代码块
  19. #Write-Error "error information here"
  20. }
  21. }
  22. $folder_path = Select-FolderDialog -Directory "Desktop" -Description "提示语句" -ShowNewFolderButton $true
  23. #$folder_path 为选择路径
  24. return $folder_path
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

返回列表