簡體   English   中英

我想與Windows命令提示符下的單行文本文件進行比較

[英]I want to do a comparison with a one-line text file in Windows command prompt

在BASH中執行此操作很簡單:

#!/bin/sh
echo "3" > text.file
foo=$(<text.file)
if [ $foo -eq 3 ]; then
echo "bar"
fi

返回bar

Windows將無法配合使用。

> ECHO "3" > test.file

> SET /p foo= < test.file

> ECHO %foo%
"3"

> IF %foo% equ 3 ECHO bar

> IF NOT %foo% equ 3 ECHO bar
bar

我很迷惑,我真的需要使它起作用。 我希望我還沒有做過一些愚蠢而基本的事情,但我擔心自己已​​經做了。

在用test.file引號編寫它時,需要用引號將3括起來以進行比較:

ECHO "3" > test.file
SET /p foo= < test.file
ECHO %foo%
IF %foo% equ "3" ECHO bar

如果要將%foo%解析為整數以執行其他操作,請使用帶有/a參數的set命令:

> SET /a foo=%foo%
> IF %foo% equ 3 ECHO bar
bar

編輯:我看到您正在嘗試在Linux外殼方面有一些經驗的同時學習批處理,但是MS Batch確實很有限,要擁有完整的外殼,您應該查看PowerShell

因為您實際上是在ECHO上將"3" (包括引號)字面意思進行比較,所以實際上您正在將"3"3進行比較,這當然會失敗。 所以:

  • 兩種類型(ECHO 3) > test.file ,因此您的比較IF %foo% equ 3 ECHO bar成功(這是此處的數字比較),
  • 或保持(ECHO "3") > test.file ,但比較IF %foo% equ "3" ECHO bar (請注意,由於"" ,,這構成了字符串比較);

請注意,我將ECHO命令放在括號() ,因為否則會將尾隨空格(重定向標記>之前的空格)也寫入test.file中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM