批处理文件 - 写入文件时添加空格

Batch File - Adding Whitespace when Writing to File

我在将数据写入批处理文件时遇到问题。

Input Data:
4


Code:

CLS
@ECHO OFF


set VBoxEXE="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" 
FOR /F "tokens=* delims=" %%x in (C:\Users\someuser\readthis.txt) DO SET read=%%x
SET /a display=%read%+1
set VMPath="C:\Users\someuser\VirtualBox\VirtualMachines\Lubuntu(32-Bit)_Clone_%read%.vdi"
set VMClone="C:\Users\someuser\VirtualBox\VirtualMachines\Lubuntu(32-Bit)_Clone_%display%.vdi"
ECHO Creating a new Virtual Machine
ECHO %VMPATH%
ECHO %display%
ECHO Old Version: %read%
ECHO New Version: %display%
REM %VBoxEXE% clonevdi %VMPath% %VMClone%
ECHO %display% > "C:\Users\someuser\readthis.txt"

我正在从文本文件中读取一个数字,在我的例子中,批处理文件中打印了 4。当我读入它时,我将它加 1,然后在克隆我的虚拟机时使用它。它有效,但是,当我打印更新版本时,在我的例子中添加后,它会打印 5 到文本文件。我遇到的问题是它先打印 5 然后再打印白色 space,这样我的 VMtoClone 就变成了:

"C:\Users\someuser\VirtualBox\VirtualMachines\Lubuntu(32-Bit)_Clone_5 .vdi" 5 后的白色 space 抛出命令提示符,它找不到我的文件。如何正确地将数据写入文本文件,使其不添加白色space,以便稍后读取?

您的问题不在于增量值,因为 set /a 将从值中删除结尾空格。您的问题出在 %read% 变量中,该变量将检索未丢弃的空格。

删除 for /f 命令中的 "tokens=* delims=" 以删除额外的空格。

要避免脚本包含空格,请将 echo 行更改为以下任何行

(ECHO %display%) > "C:\Users\someuser\readthis.txt" 

> "C:\Users\someuser\readthis.txt" ECHO %display%