无忧启动论坛

标题: 如何让批处理运行后,出现选择盘符界面? [打印本页]

作者: zgvygcj    时间: 2019-9-12 18:27
标题: 如何让批处理运行后,出现选择盘符界面?
本帖最后由 zgvygcj 于 2019-9-12 19:35 编辑

我向往某个盘符复制几个文件进去,但这个盘符每台电脑情况不一样,有的是C盘,有的是D盘等。所以我想在我实行我的批处理之前,出现一个手动选择你盘符,这样每台电脑就可以按自己的情况来指定盘符,选好后,再实行我的批处理。
   想问各们大神帮我写个,尽量简单。

如:我要把1.txt文件复制到C盘(C盘不是固态定的)

电脑A,它的C盘其实是D盘,所以运行批处理后,需要它手动输入D盘(或者选择1,2,3,4...),这时批处理再根据它输的D盘,把1.txt文件复制到D盘
作者: zds1210    时间: 2019-9-12 19:05
choice语句,在cmd语句里Help下
作者: newyun    时间: 2019-9-12 22:04
直接查找指定盘有没有windows目录,然后根据获取到的盘来复制文件不就好了
作者: nttwqz    时间: 2019-9-12 22:17
列举盘符的方式有很多种:

  1. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%a:\ echo %%a:
复制代码

  1. fsutil fsinfo drives
复制代码

  1. mountvol | find ":\"
复制代码


需要管理员权限,并稍慢,但是详细
  1. echo;list vol | diskpart | more +5 | find /i /v "DISKPART>"
复制代码

  1. fltmc volumes
复制代码



我建议,如果能确定目标盘符有什么规律,最好能去掉选择环节自动查找,比如有特定目录或文件存在?
作者: holley2008    时间: 2019-9-13 05:14
本帖最后由 holley2008 于 2019-9-13 06:24 编辑

不是有环境变量%systemroot%、%SystemDrive%吗?
举例:
  1. @echo off
  2. for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  3.     if /i "%%i:"=="%SystemDrive%" (
  4.                 echo,系统分区:%%i
  5.      )
  6. )
  7. pause>nul
复制代码

你完全用不到。
直接:copy /y 1.txt %SystemDrive% 或者 xcopy /r/y 1.txt %SystemDrive%

作者: 窄口牛    时间: 2019-9-13 08:45
本帖最后由 窄口牛 于 2019-9-13 08:47 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('mshta "%~f0"') do echo;%%a
  3. pause&exit /b


  4. <script>
  5. var Shell = new ActiveXObject("Shell.Application");
  6. var Folder = Shell.BrowseForFolder(0, "请选择文件夹", 0); //起始目录为:桌面
  7. if (Folder != null) {
  8.     Folder = Folder.items();
  9.     Folder = Folder.item();
  10.     Folder = Folder.Path;
  11.     new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder);
  12. }
  13. close();
  14. </script>
复制代码


do echo;%%a修改为do copy 1.txt %%a\1.txt
作者: chishingchan    时间: 2019-9-13 09:26
准确获取需要用到 wmi 命令




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3