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

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

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

回复 22# 肥胖龟


    for /f "delims=" %%a in ('mshta "%~f0"') do set xxx=%%a
改成这样就行了

TOP

我尝试使用了3楼的代码
  1. [code]<!-- :
  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>
复制代码
[/code]

请问选择的文件地址将被存储在哪个变量中?

TOP

请问一下,用前面的那个文件选择对话框选择文件以后,怎么在后面使用这个文件?

TOP

回复  yunyan100


已做了兼容处理
pcl_test 发表于 2017-12-16 22:37


hi,又有个帮忙要你了,之前帮我做了软件,需要稍微麻烦改下哈,现在是右边选择,想改成左右可选择,还有就是之前扩展名在有必须指定*.exe,*.txt等,增加了成*.*,,麻烦了

TOP

本帖最后由 yunyan100 于 2017-12-18 15:22 编辑

回复 15# ivor


    谢谢,下面是批处理错误提示,版主的已经ok了,

无法加载文件
D=135170
+
+
请按任意键继续. . .

TOP

回复 17# pcl_test


    原来如此,我刚试了,在win7和xp,删除expl.exe.config确实可以了,vm里的win10也是可以,实机装了net的也不行,不过这个没影响了,谢谢

TOP

回复 16# yunyan100

xp和win7不需要config文件,win8/win10才需要,如果要统一使用config文件,   将2.0和4.0那两行调换一下顺序

TOP

本帖最后由 yunyan100 于 2017-12-18 14:51 编辑

回复 14# pcl_test


    非常感谢,按你的删除可以了,奇怪,我win10装了it天空的net3.5的4.0-4.7,我如果把expl.exe.config删除,就会还是出现之前的错误
我测试了vm机里的win10,删除expl.exe.config也可以用,唯一区别,实系统是win10企业g版,虚拟win10就是180天激活企业版?非常感谢你,能用了,谢谢
xp里,装了net2.0,<supportedRuntime version="v2.0.50727"/>这句得保留,win7里也要这句,我刚试过,没这句,不能用,谢谢

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

回复 13# yunyan100

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

TOP

回复 11# pcl_test


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

TOP

回复 11# pcl_test

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

TOP

回复 10# 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

返回列表