我想将文件重定向到具有特定文件名的文本文件。文件名应该是机器的序列号。我目前有以下命令,但由于某些原因,输出与我想要的不同。
@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
,而不是机器的序列号。
在遇到问题时请提供帮助。
答案 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"