如何在批处理文件的文件名中添加变量?

时间:2018-12-27 22:32:59

标签: batch-file cmd scripting

我想将文件重定向到具有特定文件名的文本文件。文件名应该是机器的序列号。我目前有以下命令,但由于某些原因,输出与我想要的不同。

@echo off
set serial=wmic bios get serialnumber
set bit=manage-bde -status C:
%bit% > "C:\Users\Frangon\Desktop\%serial%.txt"
pause

它将%bit%重定向到文本文件,但文件名变为wmic bios get serialnumber,而不是机器的序列号。

在遇到问题时请提供帮助。

1 个答案:

答案 0 :(得分:1)

如之前的评论中所述,将命令输出输出到变量的方法是for /f循环。 wmic有一个怪癖:它有不同寻常的行尾CR CR LF。第一个CR将成为变量的一部分,并会导致不良后果。解决该问题的一种方法(也是最可靠的方法)是使用另一个for循环解析输出。

不需要将manage-bde -status C:的输出分配给一个变量(无论如何,因为它多于一行,所以批量处理非常困难)。只需将输出直接重定向到文件即可:

@echo off
for /f "tokens=2 delims==" %%a in ('wmic bios get serialnumber /value') do for %%b in (%%a) do set "serial=%%b"
manage-bde -status C: > "%USERPROFILE%\Desktop\%serial%.txt"