无忧启动论坛

标题: 【傻瓜问题】如何运行某一目录下所有.cmd [打印本页]

作者: Hysanohsp    时间: 2019-2-1 22:11
标题: 【傻瓜问题】如何运行某一目录下所有.cmd
本帖最后由 Hysanohsp 于 2019-2-3 10:15 编辑

如题
现在在D:\下有多个.cmd文件 ,文件名未知批处理文件内容未知(可能包含exit语句且exit所在位置未知)
同时还会有不少子文件夹,里面也可能出现.cmd文件但是不能被运行
如:
Chrome\start.cmd  (不能被执行!)
TTplayer\start.cmd (不能被执行!)
1.cmd(需要执行)
2.cmd(需要执行)
3.cmd(需要执行)
InstallChrome.cmd(需要执行)
InstallTTPlayer.cmd(需要执行)
Office.cmd(需要执行)


现在需要依次执行这些批处理文件(非GUI,使用命令行可以调用),请问有什么办法吗


环境:Windows10核心 PE
(【wimboot】纯手工制作:Boot10 精简维护/网络/高端网络 三层映像(2017.10.30)
http://bbs.wuyou.net/forum.php?m ... &fromuid=678746

========================================================
最佳答案(经过楼主本人精简改善,已在win10+win7平台通过测试)
(discuz的code显示会吞掉\ ,所以这里用纯文本的形式展示出来)


dir /b "D:\*.cmd" >"D:\list.txt"
for /f  "usebackq" %%a in  ("D:\list.txt") do (
::并发处理使用此条:start "" /D "D:\" "%%a"
::依次处理使用此条:start /wait "" /D "D:\" "%%a"
  )
作者: makimaki2    时间: 2019-2-1 22:11
本帖最后由 makimaki2 于 2019-2-3 02:32 编辑

  1. @echo off
  2. REM ############################################
  3. REM 名称 ExcuteFolderBatch
  4. REM 功能 逐一执行目标路径所有批处理文件,并排除子文件夹,防Exit退出
  5. REM 版本 v0.1
  6. REM 作者 K
  7. REM 日期 2019-02-03
  8. REM 说明 本代码可重新配置参数,路径与名称可以包含空白,
  9. REM      并考虑到目标路径与本脚本运行位置可能无写入权限,此外本批处理去除路径耦合可放置任何位置运行
  10. REM ############################################

  11. REM =============用户配置=============
  12. REM 设定目标路径
  13. set TargetPath=D:

  14. REM 设定目标档名
  15. set TargetExt1=*.cmd
  16. set TargetExt2=*.bat

  17. REM 设置缓存路径
  18. set TempPath=%temp%

  19. REM 设置缓存档名
  20. set TempFile=List.txt

  21. REM =============命令运行=============
  22. REM 建立缓存文件夹
  23. MD "%TempPath%" >nul 2>nul

  24. REM 建立列表
  25. dir /b "%TargetPath%\%TargetExt1%" >"%TempPath%\%TempFile%"
  26. dir /b "%TargetPath%\%TargetExt2%" >>"%TempPath%\%TempFile%"

  27. REM 逐一执行列表程序
  28. for /f  "usebackq" %%a in  ("%TempPath%\%TempFile%") do (
  29. start "" /wait /D "%TargetPath%" "%%a"
  30.   )

  31. REM 删除列表
  32. del "%TempPath%\%TempFile%"


复制代码


已在Win10下测试过
作者: nttwqz    时间: 2019-2-1 22:21
ctrl+A
Enter
作者: magicgenius    时间: 2019-2-1 22:37
dir d:\*.cmd /b>%temp%\a.cmd
%temp%\a.cmd

作者: 江南一根葱    时间: 2019-2-1 22:54
依次貌似是  for /f %%i in ('dir /b/s D:\*.cmd') do start "" /w %%i

同时貌似是 for /f %%i in ('dir /b/s D:\*.cmd') do start "" %%i
作者: vaf    时间: 2019-2-2 02:12
依次 call
作者: maghreb    时间: 2019-2-2 07:55
楼上说法都对
作者: 窄口牛    时间: 2019-2-2 08:56
可以合并,然后删除exit。
作者: 苏州本是    时间: 2019-2-2 09:18
顺序有差别:for /f %%i in (2 1 3) do start "" /b /wait D:\%%i.cmd
依顺序执行2.cmd、1.cmd、3.cmd,限制是必须依顺序列出全部文件名。
顺序无差别:for /f %%i in (“*.cmd”) do start "" /b /wait D:\%%i
无序,不必列出全部文件名。
有/B 不创建不显示新命令黑窗
有/Wait 启动程序并等待其结束(再继续执行下一命令,如果有的话)
作者: Hysanohsp    时间: 2019-2-2 16:03
江南一根葱 发表于 2019-2-1 22:54
依次貌似是  for /f %%i in ('dir /b/s D:\*.cmd') do start "" /w %%i

同时貌似是 for /f %%i in ('dir ...

大大,我的问题可能描述的不是很清楚,麻烦您重新看一下哈
for /f会遍历子文件夹。因为情况比较复杂,子文件夹内也可能有.cmd文件但是不能被调用
谢谢了
作者: Hysanohsp    时间: 2019-2-2 16:04
苏州本是 发表于 2019-2-2 09:18
顺序有差别:for /f %%i in (2 1 3) do start "" /b /wait D:\%%i.cmd
依顺序执行2.cmd、1.cmd、3.cmd,限 ...

大大,我的问题可能描述的不是很清楚,麻烦您重新看一下哈
for /f会遍历子文件夹。因为情况比较复杂,子文件夹内也可能有.cmd文件但是不能被调用
谢谢了
作者: Hysanohsp    时间: 2019-2-2 16:06
magicgenius 发表于 2019-2-1 22:37
dir d:\*.cmd /b>%temp%\a.cmd
%temp%\a.cmd

大大,这个方法在Windows10下没有用啊,您可以测试一下,辛苦啦
作者: 窄口牛    时间: 2019-2-2 16:22
去掉参数不就不遍历子文件夹了?
作者: magicgenius    时间: 2019-2-2 20:50
本帖最后由 magicgenius 于 2019-2-2 21:01 编辑
Hysanohsp 发表于 2019-2-2 16:06
大大,这个方法在Windows10下没有用啊,您可以测试一下,辛苦啦


  1. @echo off
  2. cd /d d:\
  3. for /f %%i in ('dir /b D:\*.cmd') do %%i
复制代码


作者: Hysanohsp    时间: 2019-2-3 09:42
frg521 发表于 2019-2-3 01:42
...

感谢了,本人学识浅薄,有很多地方没有注意,如果下次有提问一定改正,还望海涵
作者: Hysanohsp    时间: 2019-2-3 09:57
makimaki2 发表于 2019-2-3 00:25
已在Win10下测试过

感谢大大。鄙人对您的代码稍微精简了一下,现在已经可以正常使用了!
我觉得您是第一位真正解决了我的问题的,所以我决定将您的回答设置为最佳答案。同时也很感谢楼上诸位大大百忙之中抽空回答小弟的问题,同样表示感谢!
  1. dir /b "D:\*.cmd" >"D:\list.txt"
  2. for /f  "usebackq" %%a in  ("D:\list.txt") do (
  3. start "" /D "D:" "%%a"
  4. ::上面是并发处理的语句,需要依次处理请使用下面的语句(给start追加/wait参数)
  5. ::start /wait "" /D "D:" "%%a"
  6. )
复制代码

作者: makimaki2    时间: 2019-2-3 16:11
本帖最后由 makimaki2 于 2019-2-3 16:17 编辑

问题能解决工作顺利便是最好,
悬赏金也请务必记得

工具人人会用,上网搜索资料都有,知识性遍地都是搜索就有的东西往往没有价值
客户如果能明确开出规格,那自己写就好何必发案,
知己有所不足所以寻求解决方案是很普通很正常的事

日常工作案件中客户的需求往往是感觉不妥这样的无字天书
现实中的案件,能望闻问切 寻求关系条理,逐渐剥茧抽丝,披沙拣金
找出真正的Spec,便是功力的差异,与客户满意之所在





欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3