Board logo

标题: [文件操作] 批处理如何实现弹出输入对话框并根据输入的文件名或完整路径查找并打开文件 [打印本页]

作者: gd6570    时间: 2016-8-18 13:40     标题: 批处理如何实现弹出输入对话框并根据输入的文件名或完整路径查找并打开文件

本帖最后由 pcl_test 于 2016-8-18 14:37 编辑

打开批处理弹出一个窗口,输入文件名点击确定打开相应文件点取消则退出
补充:如果文件不存在就弹窗提醒,输入的文件名如果只包含文件名则在同级目录查找,如果是绝对路径就按绝对路径来。求助这个功能用bat怎么写呢?
作者: GNU    时间: 2016-8-18 16:22

BAT查找速度比较慢,推荐使用 Everything 这个工具。
作者: gd6570    时间: 2016-8-18 16:54

回复 2# GNU
不是怎么查找文件啊,主要是弹窗根据输入的文件路径来打开文件,如果输入的文件存在在点击确定之后打开他,不存在的话弹出窗口提示一下文件不存在,貌似需要vbs代码。
作者: gd6570    时间: 2016-8-18 17:10

回复 2# GNU



我主要是需要一个弹出框来打开一个文件,界面需要输入框,确定按钮,取消按钮,如图,临时写的一个界面
作者: yu2n    时间: 2016-8-18 19:08

回复 4# gd6570

下面是弹出一个文件选择框,并返回选择路径的方法:
  1. @echo off
  2. echo ^> 请选择一个文件。
  3. call :GetFile "F"
  4. if not defined F (
  5. echo ^> 您没有选择文件。
  6. ) else (
  7. echo ^> 您选择的文件是:
  8. echo   %F%
  9. )
  10. pause
  11. goto :eof
  12. :GetFile
  13. (echo;^<html^>^<head^>^<title^>Browse^</title^>^</head^>^<body^>^
  14. ^<input type='file' id='f' name='f'/^>^<script type='text/javascript'^>^
  15. f.click^(^);var shell = new ActiveXObject^('WScript.Shell'^);^
  16. var fso = new ActiveXObject^('Scripting.Filesystemobject'^);^
  17. fso.GetStandardStream^(1^).Write^(f.value^);window.close^(^);^
  18. ^</script^>^</body^>^</html^>)>%tmp%\getFile.hta
  19. set "%~1="
  20. for /f "delims=" %%a in ('mshta %tmp%\getFile.hta') do set "%~1=%%~a"
  21. goto :eof
复制代码

作者: pcl_test    时间: 2016-8-18 19:32

回复 5# yu2n
可以转变下调用方式
  1. @echo off
  2. for /f "delims=" %%a in ('mshta "about:<input type=file id=f><script>f.click();(new ActiveXObject('Scripting.FileSystemObject')).GetStandardStream(1).Write(f.value);close();</script>"') do set "f=%%a"
  3. echo;选择的文件是%f%
  4. pause
复制代码

作者: pcl_test    时间: 2016-8-18 19:40

  1. @echo off
  2. for /f %%a in ('mshta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(inputbox("""",,""输入文件路径或文件名""))"^)(close^)') do set "f=%%a"
  3. echo;%f%
  4. pause
复制代码

作者: gd6570    时间: 2016-8-18 19:42

回复 5# yu2n


    不是弹文件选择框,是用VBS代码弹一个窗口,然后在输入框输入文件名点击确定就用start打开这个文件,没找到的话在用另外一个vbs提醒一下,点击取消就直接退出,这样的能实现么?
作者: gd6570    时间: 2016-8-18 19:42

回复 7# pcl_test


    不是弹文件选择框,是用VBS代码弹一个窗口,然后在输入框输入文件名点击确定就用start打开这个文件,没找到的话在用另外一个vbs提醒一下,点击取消就直接退出,这样的能实现么?
作者: pcl_test    时间: 2016-8-18 19:45

回复 9# gd6570

7楼不是输入框?
作者: gd6570    时间: 2016-8-18 20:10

回复 10# pcl_test


    我看漏了一楼,请问能在没有相应文件的时候弹一个提示说没有文件么?
作者: pcl_test    时间: 2016-8-18 20:19

回复 11# gd6570
弹出对话框,论坛一搜一堆
if not exist "%f%" msg * "不存在"
作者: pcl_test    时间: 2016-8-18 20:23

本帖最后由 pcl_test 于 2016-8-18 20:34 编辑
  1. @echo off
  2. rem 自定义输入框
  3. for /f "delims=" %%a in ('mshta "about:<hta:application border=none showintaskbar=no /><input type=text id=t style='color:#FF0000;' value=输入文件路径或文件名 />&nbsp;<input type=button id=b value=确定 onclick=ck() />&nbsp;&nbsp;&nbsp;&nbsp;<input type=button value=取消 onclick=window.close() /><script>window.resizeTo(300, 60);function ck(){(new ActiveXObject('Scripting.FileSystemObject')).GetStandardStream(1).Write(t.value);close();}</script>"') do set "f=%%a"
  4. echo;%f%
  5. pause
复制代码

作者: gd6570    时间: 2016-8-18 20:46

本帖最后由 gd6570 于 2016-8-18 20:47 编辑

回复 13# pcl_test

for /f %%a in ('mshta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(inputbox("""",,""输入文件路径或文件名""))"^)(close^)') do set "f=%%a"
if not exist "%f%" MsgBox "文件不存在!",48,"重要提示"

这样写输入之后直接退出了,没弹出来,哪里出问题了?
作者: pcl_test    时间: 2016-8-18 20:47

回复 14# gd6570

cmd不认识你自创的语法
作者: gd6570    时间: 2016-8-18 20:50

回复 15# pcl_test


    怎么改啊?
作者: wskwfkbdn    时间: 2016-8-19 23:51

弹出通用对话框
作者: shenlong    时间: 2021-2-18 20:56

回复 7# pcl_test

@echo off
for /f %%a in ('mshta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(inputbox("""",,""输入文件路径或文件名""))"^)(close^)') do set "f=%%a"
echo;%f%
pause

在win7系统中不支持中文名称,请教一下有没有办法改一下支持中文名称,
作者: 杨正齐    时间: 2023-8-31 10:01

@echo off
echo 请输入文件路径,按enter键开始查找
set /p e=
start %e%
if errorlevel 9059 mshta vbscript:msgbox("找不到此文件%e%",4114,"错误提示")(window.close)




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2