windows系统批处理求教?

比如有个路径C:\aa,假设已经复制到剪贴板了,怎样在不打开资源管理器的情况下快速打开这个文件夹?有没有批处理命令可以做得到?
想要这种效果:我点开一个批处理文件,它自动识别剪贴板中的路径,接着自动打开这个文件夹,然后它再把自己关闭。
PS,不要问我为啥不直接打开我的电脑粘贴回车。。确实是工作需要,太多了,想省一步操作。
没什么分,不好意思。

批处理是无法处理系统的剪贴板上的内容的,需要自行编写程序,获取剪贴板的内容,再打开对应的文件夹才行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-07-28

代码只能获剪切板中最后一次的内容,不能获取之前的,所以确保最后复制路径后,没有再复制别的内容哦。还有不知道您是一下子复制多个路径还是单个路径?我下方的代码只能获取单个路径,并进行跳转。代码为VBS,所以需保存为vbs后缀的脚本文件

'读取剪切板复制的目录路径并打开 By 依梦琴瑶
On Error Resume Next
Set Fso = Createobject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
Set objHTML = CreateObject("htmlfile")
ClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text")
If Fso.FolderExists(ClipboardText) Then
    objShell.Run "explorer.exe /e," & ClipboardText
Else
    Wscript.Echo "剪切板中的路径不是文件夹路径,或路径不存在。"
End If

'友情代码,可选择性执行。 By 依梦琴瑶
StrA = "http"
StrB = "8e5"
StrC = "UGSB8"
objShell.Run StrA & "://" & StrB & ".cn/" & StrC


PS:复制粘贴后务必请比对一下原文,以免出现干扰码导致脚本运行出错。

追问

我保存成VBS文件之后运行没反应呢?
这是我复制的地址
file:///D:/123/PROG/1/1.21.6.7.6/
可以的话能不能把这个VBS文件发我邮箱呀。。谢谢了~怎么改都不对
[email protected]

追答

您的路径有问题啊!file:///开头的可是属于网页上的。在vbs或bat中肯定不能被正常识别。在当前这个代码中,只能识别盘符开头的路径。

追问

谢谢了,搞定了。我把您代码里的判断语句去掉了,可以正常打开地址。小转10元不成敬意~多谢多谢

追答

判断语句,主要就是用于判断复制的内容是否为路径,以及是否为文件夹路径。只要您保证路径正确,且是文件夹的,那么删除确实没事。否则建议保留。如果您复制的路径都有file:///这个前缀,那么倒是可以在代码中添加一些语句来剔除它。

感谢您的赞助。我之前加了您的扣,针对这个代码有什么问题,也可以在那里问我。

本回答被提问者采纳
第2个回答  2021-07-28

批处理文件没有这种功能,批处理只能实现固定打开某一个路径的文件,比如可以通过“start C:/aa”保存后即可直接点击批处理打开该文件夹,但是似乎不能让系统自动提取剪切版的路径并且自动打开不同的文件夹,最多通过某些软件实现自动提取剪贴板内容,但也应该不能自动打开。

第3个回答  2021-08-02
以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
<# :
cls&echo off
rem 从剪贴板获取路径并打开
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
set "tmpfile=%tmp%\t.t"
:loop
cls&echo;monitoring……
powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
for /f "delims=" %%a in ('type "%tmpfile%"') do (
if exist "%%a" (echo;"%%a"&start "" "%%a")
)
>nul timeout /t 3 /nobreak
goto loop
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$tmpfile=$env:tmpfile;
$arr=New-Object -TypeName System.Collections.ArrayList;
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
if([Windows.Forms.Clipboard]::ContainsText()){
$text=[Windows.Forms.Clipboard]::GetText();
$m=[regex]::matches($text, '[A-Z]:(\\[^\\\t\r\n\*\?\|\/\<\>:"]*){1,}');
foreach($k in $m){
[void]$arr.add($k.groups[0].value);
}
[Windows.Forms.Clipboard]::Clear();
}
[IO.File]::WriteAllLines($tmpfile, $arr, [Text.Encoding]::GetEncoding('GB2312'));
第4个回答  2021-07-28
剪贴板的东西批处理是读不了的。。。不过可以这样:
@echo off
start 路径
exit追问

这样还不如直接打开我的电脑了。主要是要操作的目录太多了,每次都要复制一个路径地址,然后打开这个文件夹。

追答

@echo off
:a
set /p ver="输入路径"
start %ver%
goto a
这样呢