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

[文件操作] 【已解决】这个批处理如何修改个初始选择位置?

[复制链接]
发表于 昨天 16:47 | 显示全部楼层 |阅读模式
本帖最后由 窄口牛 于 2026-9-3 09:32 编辑
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. reg query HKU\S-1-5-20>nul || echo;CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs" && cscript //b "%temp%\getadmin.vbs" && exit /b & del "%temp%\getadmin.vbs" /f /q>nul 2>nul
  4. pushd "%CD%"&& CD /D "%~dp0"
  5. rem for /f %%a in ('mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"^|more') do (set "name=%%a")
  6. for /f "delims=" %%a in ('powershell -command "Get-Clipboard"') do set "name=%%a"
  7. for /f "delims=" %%a in ('mshta "%~f0"') do set path1=%%a
  8. :: 修整数字排序规则,需要酌情修改
  9. copy /b "!path1!\*.*" "X:\临时文件\%name%.mp4"
  10. pause>nul
  11. <script>
  12. var Shell = new ActiveXObject("Shell.Application");
  13. var Folder = Shell.BrowseForFolder(0, "请选择文件夹", 0); //起始目录为:我的文档
  14. if (Folder != null) {
  15.     Folder = Folder.items();
  16.     Folder = Folder.item();
  17.     Folder = Folder.Path;
  18.     new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder);
  19. }
  20. close();
  21. </script>
复制代码
 楼主| 发表于 昨天 22:14 来自手机 | 显示全部楼层
本帖最后由 窄口牛 于 2026-9-2 22:33 编辑

0后面直接加路径就可以,只是中文路径不行,因为js是认utf-8编码,批处理认得是ansi。
以后就用英文文件夹,放个desktop.ini,让它显示中文就行了。
发表于 昨天 19:40 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-9-2 20:48 编辑

以下是用 bat+powershell 一气呵成的版本,版本一调用 windows.forms.folderBrowserDialog 单选文件夹,版本二调用 shell.application.browseForFolder 单选文件夹,初始目录 d0 可在代码第一行自定义

版本一
  1. @echo off &setlocal &set "d0=c:\temp"
  2. powershell -nop -c "add-type -assemblyname system.windows.forms; $name=[windows.forms.clipboard]::getText(); $d=new-object windows.forms.folderBrowserDialog; $d.description='在 %d0% 中选择一个子目录:'; $d.selectedPath='%d0%'; if($d.showDialog() -eq 'OK'){cmd /c copy /b ($d.selectedPath+'\*.*') ('X:\临时文件\'+$name+'.mp4') >$null}"
  3. exit/b
复制代码


版本二
  1. @echo off &setlocal &set "d0=c:\temp"
  2. powershell -nop -c "add-type -assemblyname system.windows.forms; $name=[windows.forms.clipboard]::getText();$s=new-object -comobject shell.application; $d=$s.browseForFolder(0, '在 %d0% 中选择一个子目录:', 0, $s.nameSpace('%d0%')); if($d){cmd /c copy /b ($d.self.path+'\*.*') ('X:\临时文件\'+$name+'.mp4') >$null}"
  3. exit/b
复制代码
发表于 昨天 20:03 | 显示全部楼层
var Folder = Shell.BrowseForFolder(0, "请选择文件夹", 0); //起始目录为:我的文档
~~~~~~~~~~~~~(0, "请选择文件夹", 0,"写下你要的初始位置,用引号括起")
~~(0, "请选择文件夹", 0,5);//指定初始位置为"我的文档"
发表于 昨天 20:53 | 显示全部楼层

  1. 参考:https://learn.microsoft.com/zh-cn/windows/win32/api/shldisp/ne-shldisp-shellspecialfolderconstants

  2. BrowseForFolder需要4个参数:
  3. 第一个参数:对话框的父窗口的句柄
  4. 第二个参数:表示在“ 浏览 ”对话框中显示的标题
  5. 第三个参数:该值包含方法的选项。
  6. 第四个参数:在对话框中使用的根文件夹。此值可以是指定文件夹路径或ShellSpecialFolderConstants枚举值

  7. 第四个参数ShellSpecialFolderConstants枚举值:
  8. 0x00 :Windows 桌面 - 命名空间根目录的虚拟文件夹。
  9. 0x02 :包含用户程序组的文件系统目录 (也是) 文件系统目录。 典型路径为 C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs。
  10. 0x03 :包含控制面板应用程序的图标的虚拟文件夹。
  11. 0x04 :包含已安装打印机的虚拟文件夹。
  12. 0x05 :用作用户文档的通用存储库的文件系统目录。 典型路径为 C:\Users\username\Documents。
  13. 0x06 :文件系统目录,用作用户最喜爱的 URL 的通用存储库。 典型路径为 C:\Documents and Settings\username\Favorites。
  14. 0x07 :对应于用户的启动程序组的文件系统目录。 每当任何用户在重新启动后首次登录到其配置文件时,系统就会启动这些程序。 典型路径为 C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartUp。
  15. 0x08 :包含用户最近使用的文档的文件系统目录。 典型路径为 C:\Users\username\AppData\Roaming\Microsoft\Windows\Recent。
  16. 0x09 :包含“ 发送到” 菜单项的文件系统目录。 典型路径为 C:\Users\username\AppData\Roaming\Microsoft\Windows\SendTo。
  17. 0x0a :包含用户回收站中的对象的虚拟文件夹。
  18. 0x0b :包含 “开始” 菜单项的文件系统目录。 典型路径为 C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu。
  19. 0x10 :用于物理存储桌面上显示的文件对象的文件系统目录。 不应将其与桌面文件夹本身(即虚拟文件夹)混淆。 典型路径为 C:\Documents 和 Settings\username\Desktop。
  20. 0x11 :我的计算机 - 包含本地计算机上的所有内容的虚拟文件夹:存储设备、打印机和控制面板。 此文件夹还可以包含映射的网络驱动器。
  21. 0x12 :网络邻里 - 表示网络命名空间层次结构根的虚拟文件夹。
  22. 0x13 :一个文件系统文件夹,其中包含“我的网络”Places虚拟文件夹中的任何链接对象。 它与表示网络命名空间根的 ssfNETWORK 不同。 典型路径为 C:\Users\username\AppData\Roaming\Microsoft\Windows\Network Shortcuts。
  23. 0x14 :包含已安装字体的虚拟文件夹。 典型路径为 C:\Windows\Fonts。
  24. 0x15 :用作文档模板通用存储库的文件系统目录。
  25. 0x16 :文件系统目录,其中包含显示在所有用户的 “开始 ”菜单上的程序和文件夹。 典型路径为 C:\Documents and Settings\All Users\Start Menu。 仅对Windows NT系统有效。
  26. 0x17 :文件系统目录,其中包含所有用户显示在 “开始” 菜单上的常见程序组的目录。 典型路径为 C:\Documents and Settings\All Users\Start Menu\Programs。 仅对Windows NT系统有效。
  27. 0x18 :包含所有用户的“启动”文件夹中显示的程序的文件系统目录。 典型路径为 C:\Documents and Settings\All Users\Microsoft\Windows\Start Menu\Programs\StartUp。 仅对Windows NT系统有效。
  28. 0x19 :文件系统目录,其中包含所有用户在桌面上显示的文件和文件夹。 典型路径为 C:\Documents and Settings\All Users\Desktop。 仅对Windows NT系统有效。
  29. 0x1a :版本 4.71。 用作应用程序特定数据的通用存储库的文件系统目录。 典型路径为 C:\Documents and Settings\username\Application Data。
  30. 0x1b :包含打印机虚拟文件夹中任何链接对象的文件系统目录。 典型路径为 C:\Users\username\AppData\Roaming\Microsoft\Windows\Printer Shortcuts。
  31. 0x1c :版本 5.0。 文件系统目录,用作本地 (非漫游) 应用程序的数据存储库。 典型路径为 C:\Users\username\AppData\Local。
  32. 0x1d :与用户的未本地化启动程序组对应的文件系统目录。
  33. 0x1e :对应于所有用户的非本地化启动程序组的文件系统目录。 仅对Windows NT系统有效。
  34. 0x1f :文件系统目录,用作所有用户共享的常用 URL 的通用存储库。 仅对Windows NT系统有效。
  35. 0x20 :用作临时 Internet 文件的通用存储库的文件系统目录。 典型路径为 C:\Users\username\AppData\Local\Microsoft\Windows\Temporary Internet Files。
  36. 0x21 :用作 Internet Cookie 通用存储库的文件系统目录。 典型路径为 C:\Documents and Settings\username\Application Data\Microsoft\Windows\Cookies。
  37. 0x22 :用作 Internet 历史记录项的通用存储库的文件系统目录。
  38. 0x23 :版本 5.0。 所有用户的应用程序数据。 典型路径为 C:\Documents and Settings\All Users\Application Data。
  39. 0x24 :版本 5.0。 Windows 目录。 这对应于 %windir% 或 %SystemRoot% 环境变量。 典型路径为 C:\Windows。
  40. 0x25 :版本 5.0。 System 文件夹。 典型路径为 C:\Windows\System32。
  41. 0x26 :版本 5.0。 Program Files 文件夹。 典型路径为 C:\Program Files。
  42. 0x27 :“我的图片”文件夹。 典型路径为 C:\Users\username\Pictures。
  43. 0x28 :版本 5.0。 用户的配置文件文件夹。
  44. 0x29 :版本 5.0。 系统文件夹。 典型路径是 64 位计算机上的 C:\Windows\System32 或 C:\Windows\Syswow32。
  45. 0x30:请勿使用此字段。 请改用代码中的值 0x2a (42) 指定 program Files (x86) 文件夹。 典型路径是 64 位计算机上的 C:\Program Files 或 C:\Program Files (x86) 。
复制代码
发表于 昨天 21:45 | 显示全部楼层
这流程够麻烦的。

固定目录,不如在资源管理器直接打开,做个右键菜单,只需要处理mp4文件名变量就行了,最好代码中直接按自然数排序文件名,ffmpeg合并为MP4,应该是一劳永逸了。
 楼主| 发表于 昨天 22:16 来自手机 | 显示全部楼层
本帖最后由 窄口牛 于 2026-9-2 22:29 编辑

感谢各位指示。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-3 12:13

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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