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

[文件操作] bat 能否实现给F1-F10,快速粘贴设置好的路径?

[复制链接]
发表于 2024-9-14 09:49:53 | 显示全部楼层 |阅读模式
本帖最后由 jack2020 于 2024-9-18 10:39 编辑

bat 能否实现给F1-F10赋值指定路径
多年一直用一个叫多功能剪切板的小软件,可以把电脑指定路径赋值给F1、F2、F3~F10,但是每次都要手动粘贴路径到软件窗口,有点麻烦。
然后每次在可编辑窗口按下F1或者F2,或者其他键,可以把预设的路径粘贴出来。

比如赋值:
F1路径为:C:\01_项目AA2024\15_广西ABC2024\03_AAA资料0914
F2路径为:D:\01_项目B2024\15_广西A2024\03_AA资料0914
F3路径为:E:\01_项目DDD2024\15_广西B2024\03_BCDEFG资料0914
按下键盘F1,自动把C:\01_项目AA2024\15_广西ABC2024\03_AAA资料0914 路径粘贴出来。
按下键盘F2,自动把D:\01_项目B2024\15_广西A2024\03_AA资料0914路径粘贴出来。
按下键盘F3,自动把E:\01_项目DDD2024\15_广西B2024\03_BCDEFG资料0914路径粘贴出来

求助大佬,能否用bat实现这一功能。
快速粘贴设置好的路径。

这里有原始代码,求会编程的大佬,重新编译一下,加写个ini配置文件可以自己读取ini文件,ini文本中可以自己手动修改F1-F10的地址,来实现这个功能?
多功能剪切板.e
多功能剪切板.e  源代码下载地址:
https://www.123pan.com/s/CTVA-40mIh
发表于 2024-9-14 10:58:09 | 显示全部楼层
把文件保存为vbs,跟程序放一块运行即可。
  1. set ws = createobject("wscript.shell")
  2. ws.run ("多功能剪切板.exe")
  3. wscript.sleep 1000
  4. ws.appactivate("多功能剪切板")
  5. ws.sendkeys "c:\11"                         'F1的快捷路径
  6. ws.sendkeys "~{TAB}"
  7. ws.sendkeys "c:\22"                         'F2的快捷路径
  8. ws.sendkeys "~{TAB}"
  9. ws.sendkeys "c:\33"
  10. ws.sendkeys "~{TAB}"
  11. wscript.sleep 1000
  12. ws.sendkeys "% n"                         '输入完成,最小化多功能窗口
  13. wscript.quit
复制代码
 楼主| 发表于 2024-9-14 12:17:48 | 显示全部楼层
回复 2# ppll2030

谢谢!
路径是普通的数字 英文路径可以识别,但是路径带这个汉字和下划线,识别为乱码,大佬可以修正一下吗?

比如这个路径:F1赋值   E:\01_项目2024\15_广西2024\03_资料0914
多功能剪切板识别为F1:   E:\01_/2024\15_2024\03_0914
文件夹带汉字的全掉了
vbs文本编码格式是ANSI,换其他格式启动不了。
发表于 2024-9-14 14:54:16 | 显示全部楼层
sendkeys貌似send不了中文,只能将中文放进windows剪贴板,然后ctrl+v,不过这样也可能会出现很多其他问题(例如剪贴板数据可能不匹配和被替换,时间对不上会粘贴到上一次的内容)
 楼主| 发表于 2024-9-14 15:03:23 | 显示全部楼层
回复 4# Five66

或者有没有其他bat代码实现这个功能,不用这个多功能剪切板软件 ,仅用  把F1-F10赋值10个不同的带汉字的电脑文件夹路径  启动BAT之后,按下F1或者其他键,可以粘贴出对应路径?
发表于 2024-9-14 15:18:15 | 显示全部楼层
你说清楚,到底是要把路径输入到这个程序里,还是要把程序里已设置好的路径复制出来以便到其它地方粘贴?
发表于 2024-9-14 15:30:14 | 显示全部楼层
本帖最后由 ppll2030 于 2024-9-14 15:31 编辑

把代码保存为bat文件,
地址列表就根据你自己的情况修改吧。
注意:16行的 more +21的数值一定要与地址列表行号对应。
  1. @echo off&setlocal enabledelayedexpansion
  2. (echo set ws = createobject("wscript.shell"^)
  3. echo N = WScript.Arguments(0^)
  4. echo ws.appactivate("多功能剪切板"^)
  5. echo wscript.sleep 500
  6. echo For i = 1 To N-1
  7. echo     ws.SendKeys "{TAB}"
  8. echo Next
  9. echo ws.sendkeys "^v"
  10. echo wscript.sleep 500
  11. echo ws.sendkeys "{TAB}"
  12. echo wscript.quit)>$.vbs

  13. start "" "多功能剪切板.exe"
  14. rem 注意 +21 这个数值与下面的 “地址列表:”的行数一致。否则取数会出错
  15. for /f "delims=" %%i in ('more +21 %~f0') do (
  16.         set/a n+=1&echo %%i | clip &cscript //NoLogo $.vbs !n!
  17. )
  18. del $.vbs&exit/b

  19. 地址列表:
  20. E:\01_项目2024\15_广西2024\03_资料0914
  21. E:\02_项目2024\15_北京2024\03_资料0914
  22. E:\03_项目2024\15_西安2024\03_资料0914
复制代码
 楼主| 发表于 2024-9-14 15:42:47 | 显示全部楼层
回复 6# czjt1234


    是后面一种
发表于 2024-9-14 15:45:07 | 显示全部楼层
保存为1.bat, ANSI编码.
  1. <#*,:
  2. @echo off
  3. cd /d "%~dp0"
  4. set "batchfile=%~f0"
  5. Powershell -ExecutionPolicy Bypass -C "Set-Location -LiteralPath ([Environment]::CurrentDirectory);. ([ScriptBlock]::Create([IO.File]::ReadAllText($env:batchfile,[Text.Encoding]::GetEncoding(0) )) )"

  6. exit /b
  7. #>
  8. Add-Type -AssemblyName System.Windows.Forms, Microsoft.VisualBasic
  9. $proc = Start-Process -FilePath "多功能剪切板.exe" -PassThru
  10. [Microsoft.VisualBasic.Interaction]::AppActivate($proc.Id)
  11. # Start-Sleep -Milliseconds 1000
  12. [System.Windows.Forms.SendKeys]::SendWait("E:\01_项目2024\15_广西2024\03_资料0914") # F1的快捷路径
  13. [System.Windows.Forms.SendKeys]::SendWait("~{TAB}")

  14. [System.Windows.Forms.SendKeys]::SendWait("E:\22\01_项目2024\15_广西2024\03_资料0914") # F2的快捷路径
  15. [System.Windows.Forms.SendKeys]::SendWait("~{TAB}")

  16. [System.Windows.Forms.SendKeys]::SendWait("E:\33\中文abc") # F3的快捷路径
  17. [System.Windows.Forms.SendKeys]::SendWait("~{TAB}")

  18. Start-Sleep -Milliseconds 500
  19. [System.Windows.Forms.SendKeys]::SendWait("% n")
复制代码
 楼主| 发表于 2024-9-14 15:54:12 | 显示全部楼层
回复 9# flashercs


    好像无法启动
多功能剪切板.exe
发表于 2024-9-14 15:54:26 | 显示全部楼层
放弃小工具,直接用autohotkey可能比较简单 试着写了一个

  1. f1::send, E:\01_项目2024\15_广西2024\03_资料0914
  2. f2::send, E:\02_项目2024\15_北京2024\03_资料0914
  3. f3::send, E:\03_项目2024\15_西安2024\03_资料0914
  4. return
复制代码
 楼主| 发表于 2024-9-14 15:56:14 | 显示全部楼层
回复 7# ppll2030


    +21是怎么看   这个路径 E:\01_项目2024\15_广西2024\03_资料0914中的数字和文字个数吗 能启动 好像没有自动填表呀
 楼主| 发表于 2024-9-14 15:57:14 | 显示全部楼层
回复 11# 77七


    这个是什么语言,求具体用法?
发表于 2024-9-14 15:58:33 | 显示全部楼层
回复 13# jack2020


   11楼蓝色字体链接,安装后把代码保存为 1.ahk,执行
发表于 2024-9-14 16:06:35 | 显示全部楼层
win11_22h2 测试通过
  1. @echo off

  2. :loop
  3. set /p s=请输入一个数字,按回车键退出
  4. if %s%==1 goto :c1
  5. if %s%==2 goto :c2
  6. exit

  7. :c1
  8. set "s=E:\01_项目2024\15_广西2024\03_资料0914"
  9. mshta.exe vbscript:ClipboardData.SetData("text","%s%")(close)
  10. echo 已复制 %s%
  11. echo,
  12. goto :loop

  13. :c2
  14. set "s=E:\01_项目2024"
  15. mshta.exe vbscript:ClipboardData.SetData("text","%s%")(close)
  16. echo 已复制 %s%
  17. echo,
  18. goto :loop
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:11 , Processed in 0.023211 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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