Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 循环的批处理文件找不到文本文件_Batch File_For Loop - Fatal编程技术网

Batch file 循环的批处理文件找不到文本文件

Batch file 循环的批处理文件找不到文本文件,batch-file,for-loop,Batch File,For Loop,我试图使用以下代码获取用户命名为新卷的驱动器的名称,以便在我的公司自动化我们的一些测试用例 wmic logicaldisk get caption,volumeName > c:\batch_script.txt for /f "tokens=*" %%A in (c:\batch_script.txt) do echo %%A PAUSE 现在我发现这个文件有一些不同的运行时问题;在我运行该文件的前2/3次,我被告知系统找不到文件c:\batch\u script.txt,但在第三次

我试图使用以下代码获取用户命名为新卷的驱动器的名称,以便在我的公司自动化我们的一些测试用例

wmic logicaldisk get caption,volumeName > c:\batch_script.txt
for /f "tokens=*" %%A in (c:\batch_script.txt) do echo %%A
PAUSE
现在我发现这个文件有一些不同的运行时问题;在我运行该文件的前2/3次,我被告知系统找不到文件c:\batch\u script.txt,但在第三次尝试后,我没有收到系统再也找不到该文件的消息

我做错了什么?还是wmic命令破坏了我的文件权限?因为我必须以管理员身份运行批处理文件才能运行wmic命令


再次感谢高级中的所有帮助。

您是否使用管理员权限运行脚本? 如果C:\是windows驱动器,则需要管理员权限才能在其中创建文件。

我建议wmic可能正在调用一些实际创建文件的可执行文件,但wmic本身会立即返回。我看不到它在我的系统上发生,但也许

因此,可能会删除目标文件,我会选择在%temp%下创建一个文件,以避免安全问题,然后故意等待或调查某个可执行文件是否使用tasklist出现,并等待该文件终止

无论如何,wmic输出是unicode的,所以您需要

for /f ... %%A in ('type "yourfilename"') do ...

我不知道你为什么会看到你报告的结果。但是下面的内容会给你想要的

@echo off
for /f "skip=1 delims=" %%A in (
  'wmic logicaldisk where "volumeName='System Reserved'" get caption'
) do for /f "delims=" %%B in ("%%A") do echo %%B
当FOR/F直接处理WMIC输出时,extra FOR/F循环用于修剪WMIC输出每行末尾的多余多余回车。WMIC输出为unicode,并且在将WMIC输出转换为ANSI时,有一个FOR/F异常会神秘地追加额外回车