假设现在有这么一个目录结构 a/b/c/d/e/f/g.txt ,怎样才能在双击a的时候,直接定位到f文件夹,而不需要一层一层打开?
就是忽略中间所有只包含一个文件夹的文件夹,打开最深的一个,不符合条件的文件夹
我现在用的是QTTabBar,可以实现这个功能吗?
或者通过其他方式,能实现吗?比如ahk什么的
就是直接打开最里面的那层子文件夹?
这种要么是直接搜索要么就是直接显示最底层的文件
搜索的话,listary可以在当前目录搜索
直接显示文件tc有这个功能,qttabbar就不知道了
我觉得这种有个问题啊,软件大概率无法解决,就是你没办法保证每一层的子文件夹只有一个,那么软件如何决定进入哪一个文件夹呢?
可能最好的办法还是搜索
但是根据逻辑来讲,软件没办法做决断啊,比如有两个只有文件的文件夹
就是忽略中间所有只包含一个文件夹的文件夹,打开最深的一个,(非(只包含一个文件夹))的文件夹
就是如果当前文件夹只有一个文件夹,就继续进入,否则停止
我理解你的意思。
Qttabbar 的话, 双击不行. 你可以用它的文件夹预览按钮折中实现.
说白了就是github的模式。挺有用的。
我原先魔改过安卓amaze文件管理器增加这种功能。
嗯,github,vscode 的文件模式就是这样的。不过还真没见过资源管理器之类的应用是这么处理的。
AHK能解决,但是没有通用性,因为大部分文件结构并不是这样的.
这个会直接进入最后一个 (只含一个文件 或 含有 多个文件或多个文件夹的) 的文件夹
AHKV2
path := "D:\a"
loop
{
count := 0
loop files path "\*.*", "DF"
count := A_Index, _path := A_LoopFileFullPath, isFolderBool := DirExist(A_LoopFileFullPath)
if count = 1 && isFolderBool
path := _path
else if count > 1 || !isFolderBool
{
Run(path)
break
}
}
自己通过脚本解决了。将下面的代码保存为js文件,放到合适的地方,然后将文件拖到命令栏,就行了。点击即可运行。
需要注意的是,系统不能有js文件的默认打开方式,有的话清除一下。如果弹窗乱码的话,把文件保存为gbk编码。
var qs = new ActiveXObject("QTTabBarLib.Scripting");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var wnd = qs.activewindow;
if (wnd) {
var activeTab = wnd.ActiveTab;
var selectedItems = wnd.SelectedItems
var currentPath = activeTab.Path;
var selectedFolderPath = ""
if (selectedItems.Count == 1) {
var curPath = selectedItems.Item(0);
if (fso.FolderExists(curPath)) {
currentPath = curPath;
selectedFolderPath = curPath;
}
}
while (onlyOneFolder(currentPath)) {
var currentFolderObject = fso.GetFolder(currentPath);
var enumerator = new Enumerator(currentFolderObject.SubFolders);
for (; !enumerator.atEnd(); enumerator.moveNext()) {
currentPath = enumerator.item().Path;
}
}
if (currentPath != activeTab.Path && currentPath != selectedFolderPath) {
qs.InvokeCommand("OpenInPlace", currentPath);
} else {
qs.alert("当前目录并非只有一个文件夹");
}
}
function onlyOneFolder(currentPath) {
var currentFolderObject = fso.GetFolder(currentPath);
var folderCount = currentFolderObject.SubFolders.Count;
var fileCount = currentFolderObject.Files.Count;
var result = fileCount == 0 && folderCount == 1
return result;
}
1 个赞