zgvygcj 发表于 2019-9-12 18:27:15

如何让批处理运行后,出现选择盘符界面?

本帖最后由 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:50

choice语句,在cmd语句里Help下

newyun 发表于 2019-9-12 22:04:06

直接查找指定盘有没有windows目录,然后根据获取到的盘来复制文件不就好了

nttwqz 发表于 2019-9-12 22:17:56

列举盘符的方式有很多种:

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:

fsutil fsinfo drives

mountvol | find ":\\"

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

fltmc volumes


我建议,如果能确定目标盘符有什么规律,最好能去掉选择环节自动查找,比如有特定目录或文件存在?

holley2008 发表于 2019-9-13 05:14:55

本帖最后由 holley2008 于 2019-9-13 06:24 编辑

不是有环境变量%systemroot%、%SystemDrive%吗?
举例:
@echo off
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 (
    if /i "%%i:"=="%SystemDrive%" (
                echo,系统分区:%%i
   )
)
pause>nul
你完全用不到。
直接:copy /y 1.txt %SystemDrive% 或者 xcopy /r/y 1.txt %SystemDrive%

窄口牛 发表于 2019-9-13 08:45:36

本帖最后由 窄口牛 于 2019-9-13 08:47 编辑

@echo off
for /f "delims=" %%a in ('mshta "%~f0"') do echo;%%a
pause&exit /b


<script>
var Shell = new ActiveXObject("Shell.Application");
var Folder = Shell.BrowseForFolder(0, "请选择文件夹", 0); //起始目录为:桌面
if (Folder != null) {
    Folder = Folder.items();
    Folder = Folder.item();
    Folder = Folder.Path;
    new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder);
}
close();
</script>

do echo;%%a修改为do copy 1.txt %%a\1.txt

chishingchan 发表于 2019-9-13 09:26:42

准确获取需要用到 wmi 命令
页: [1]
查看完整版本: 如何让批处理运行后,出现选择盘符界面?