找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 97701|回复: 18

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

[复制链接]
发表于 2016-8-18 13:40:34 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-8-18 14:37 编辑

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

评分

参与人数 1PB -2 收起 理由
pcl_test -2 发帖前先使用论坛搜索

查看全部评分

发表于 2016-8-18 16:22:05 | 显示全部楼层
BAT查找速度比较慢,推荐使用 Everything 这个工具。
 楼主| 发表于 2016-8-18 16:54:43 | 显示全部楼层
回复 2# GNU
不是怎么查找文件啊,主要是弹窗根据输入的文件路径来打开文件,如果输入的文件存在在点击确定之后打开他,不存在的话弹出窗口提示一下文件不存在,貌似需要vbs代码。
 楼主| 发表于 2016-8-18 17:10:38 | 显示全部楼层
回复 2# GNU



我主要是需要一个弹出框来打开一个文件,界面需要输入框,确定按钮,取消按钮,如图,临时写的一个界面
发表于 2016-8-18 19:08:34 | 显示全部楼层
回复 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
复制代码

评分

参与人数 1技术 +1 收起 理由
986981535 + 1 好玩0.0可以实现域内电脑选择文件做管理员运 ...

查看全部评分

发表于 2016-8-18 19:32:37 | 显示全部楼层
回复 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
复制代码

评分

参与人数 1技术 +1 收起 理由
yu2n + 1 感谢分享

查看全部评分

发表于 2016-8-18 19:40:05 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2016-8-18 19:42:21 | 显示全部楼层
回复 5# yu2n


    不是弹文件选择框,是用VBS代码弹一个窗口,然后在输入框输入文件名点击确定就用start打开这个文件,没找到的话在用另外一个vbs提醒一下,点击取消就直接退出,这样的能实现么?
 楼主| 发表于 2016-8-18 19:42:57 | 显示全部楼层
回复 7# pcl_test


    不是弹文件选择框,是用VBS代码弹一个窗口,然后在输入框输入文件名点击确定就用start打开这个文件,没找到的话在用另外一个vbs提醒一下,点击取消就直接退出,这样的能实现么?
发表于 2016-8-18 19:45:28 | 显示全部楼层
回复 9# gd6570

7楼不是输入框?
 楼主| 发表于 2016-8-18 20:10:03 | 显示全部楼层
回复 10# pcl_test


    我看漏了一楼,请问能在没有相应文件的时候弹一个提示说没有文件么?
发表于 2016-8-18 20:19:54 | 显示全部楼层
回复 11# gd6570
弹出对话框,论坛一搜一堆
if not exist "%f%" msg * "不存在"
发表于 2016-8-18 20:23:47 | 显示全部楼层
本帖最后由 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
复制代码

评分

参与人数 1技术 +10 收起 理由
CrLf + 10 补漏

查看全部评分

 楼主| 发表于 2016-8-18 20:46:24 | 显示全部楼层
本帖最后由 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,"重要提示"

这样写输入之后直接退出了,没弹出来,哪里出问题了?
发表于 2016-8-18 20:47:53 | 显示全部楼层
回复 14# gd6570

cmd不认识你自创的语法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 14:42 , Processed in 0.022533 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表