[英]Take a specific output in Windows cmd
我需要搜索.txt
文件%temp%\\OK-%username%.txt
並比較和回顯響應。 If file exists do()
,則執行以下命令, dir %temp%\\OK-%username%.txt | findstr "OK"
dir %temp%\\OK-%username%.txt | findstr "OK"
,輸出返回是: 23/10/2020 17:10 0 OK-%username%
。
set var=dir %temp%\OK-%username%.txt | findstr "OK"
if %var% EQU "OK-%username%.txt" (
msg "%username%" test
) else (
msg "%username%" test 2
)
使用 echo %var%
我得到以下回報:
"dir C:\Users\%username%.CAT\AppData\Local\Temp | findstr "OK-%username%"
預期是僅返回文件位置。
您正在嘗試使用 Linux/PowerShell 風格的測試——IE 測試,其中 IF 語句可以包含一個命令並返回它的內容。
這在CMD
是不可能的,僅使用IF
並且嘗試將命令嵌套在評估的術語之一中只會產生語法錯誤。
目前還不清楚是要在腳本中運行還是直接在 CLI 中運行。 雖然,如果我理解你的要求,它不會有什么不同。
您想檢查“%temp%\\OK-%username%.txt”是否存在,並根據它是否這樣做而采取行動,這是非常直接的。
SET "_File=%temp%\OK-%username%.txt"
IF EXIST "%_File%" (
msg "%username%" test
) else (
msg "%username%" test 2
)
解決這個問題的一個簡單方法是將 DOS 語言轉換為 Powershell,繼續使用以下命令,我使用 powershell 獲得了更好的結果,我希望喜歡。
$var = Get-ChildItem -Path "$env:TEMP" -ErrorAction SilentlyContinue
if ($var.Name -Contains "OK-$env:USERNAME.txt") {
msg "$env:USERNAME" test
} else {
msg "$env:USERNAME" test 2
}
Exit
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.