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

[文件操作] 【已解决】怎样使用bat动态获取目录下[进程名v*.exe]后缀?

本帖最后由 867258173 于 2017-12-18 20:11 编辑

比如我写了个程序,名为
a.exe
为了能够方便关闭,再写个bat关闭进程
  1. taskkill /f /im a.exe
复制代码
为了分辨每次更新程序版本,我会每次加个后缀
a v1.0.exe

但每次更改后缀,都要去bat再去更改
  1. taskkill /f /im a v1.0.exe
  2. taskkill /f /im a v1.1.exe
  3. taskkill /f /im a v1.2.exe
  4. taskkill /f /im a v....exe
复制代码
请问怎样才能更改进程名后,也能自动获取进程名v...到.exe之间的字段?
这样每次改了进程名都不用再改bat里的进程名,会更方便些

PS:不是通过使用set /P CHS= 手动输入的,而是自动获取的

回复 6# ivor


_(:з」∠)_实现了,谢谢
  1. @echo off
  2. rem echo start /min open a small window
  3. :logmenu
  4. title ★启动和关闭有版本后缀exe★ 2017-12-18
  5. color 1A
  6. rem elect menu
  7. echo ----------------------------------------------------------------------
  8. echo             ★启动和关闭有版本后缀exe★
  9. echo.
  10. echo echo [1] 启动exe    [2] 关闭exe
  11. echo echo [esc] 关闭
  12. echo ----------------------------------------------------------------------
  13. set /p chs= 请选择(Choose Please):
  14. echo.
  15. if /i "%chs%"=="1" (
  16. goto 启动exe
  17. )
  18. if /i "%chs%"=="2" (
  19. goto 关闭exe
  20. )
  21. if /i "%chs%"=="3" (
  22. goto null
  23. )
  24. if /i "%chs%"=="4" (
  25. goto null
  26. )
  27. goto esc
  28. goto 日志菜单(logmenu)
  29. rem ===============================================
  30. :启动exe
  31. rem 启动exe
  32. echo %chs%
  33. :: this这里更改exe版本前缀
  34. @for /f "delims=" %%a in ('dir /b "this v*"') do (start "" "%%a")
  35. pause
  36. cls
  37. goto 日志菜单(logmenu)
  38. rem ===============================================
  39. :关闭exe
  40. rem 关闭exe
  41. :: this这里更改exe版本前缀
  42. taskkill /f /im "this v*"
  43. pause
  44. cls
  45. goto 日志菜单(logmenu)
  46. rem ===============================================
  47. :关闭
  48. rem 关闭
  49. exit
  50. pause
  51. cls
  52. goto 日志菜单(logmenu)
  53. rem ===============================================
  54. :esc
  55. rem 关闭窗口
  56. rem pause
  57. exit
复制代码
这就是我想要实现的功能,其实要是再加个自己输入进程名前缀选项就更好了,不过这个目前已经实现需求了

TOP

回复 5# 867258173
  1. @for /f "delims=" %%a in ('dir /b "FSCapture v*"') do (start "" "%%a")
复制代码
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

本帖最后由 867258173 于 2017-12-18 19:38 编辑

回复 4# ivor


    虽然不是这个,但居然犯了另一个低级错误,,忘了编辑器都改成UTF-8格式了,包括txt,在cmd试了下才发现原因,OTL
    总之关闭进程实现了
   
    顺便请教下,如果要启动exe的话
  1. start "" "FSCapture v*"
复制代码
这样会报系统找不到文件,请问这个该怎么处理呢?

TOP

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

回复 3# 867258173

我猜你v之前的空格打多了,要不就是字母打错了

   
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

本帖最后由 867258173 于 2017-12-18 16:12 编辑

回复 2# ivor


谢谢回复,刚随便找个应用程序改名测了下
把FSCapture.exe改成 FSCapture v1.exe
任务管理器显示的是这个改了的名称
然后运行
  1. taskkill /f /im "FSCapture v*"
复制代码
已经是管理员运行,但没有关闭进程,说明并没有识别出进程名

TOP

  1. taskkill /f /im "a v*"
复制代码
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

返回列表