簡體   English   中英

在 Windows cmd 中獲取特定輸出

[英]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.

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