ฉันจะทราบได้อย่างไรว่าตัวแปร Windows XP cmd ลงท้ายด้วยสตริงที่กำหนดหรือไม่


3

ฉันต้องการที่จะตรวจสอบว่าตัวอักษรตัวสุดท้าย (s) ของตัวแปรสภาพแวดล้อมมีหรือ\ .exeฉันจะทำสิ่งนี้ใน Windows XP SP3 ได้อย่างไร

คำตอบ:


7

วิธีใช้สตริงย่อย:

set _parm1=foo.exe
if [%_parm1:~-1%]==[\] echo ends with \
if /i [%_parm1:~-4%]==[.exe] echo ends with .exe

คุณแทนที่หมายเลขก่อนหน้าเครื่องหมาย% เพื่อเปลี่ยนแปลงจำนวนอักขระที่ตรวจสอบที่ส่วนท้ายของสตริง


มันจ่ายเพื่ออ่านความช่วยเหลือเกี่ยวกับคำสั่ง cmd ทั้งหมดโดยเฉพาะอย่างยิ่งการตั้งค่าและสำหรับ พวกเขาพัฒนาขึ้นอย่างมากใน XP แม้ว่าไวยากรณ์จะไม่ง่ายต่อการจดจำหรือง่ายต่อการบำรุงรักษาเมื่อมีคนสร้างมันขึ้นมา แต่มันจะช่วยให้คุณทำสิ่งต่างๆให้สำเร็จเมื่อคุณถูกบังคับให้ทำมันด้วยไฟล์แบตช์ มันทำงานได้กับทุกระบบ windows ตั้งแต่ XP ดังนั้นจึงเป็นสิ่งที่ดีที่จะรู้
bruceatk

3

อย่าทำเพื่อสุขภาพจิตของคุณเอง เปลี่ยนเป็น PowerShell, Perl, Python, C # ... แม้ VBScript จะยอมรับได้


:: call the subroutine defined below...
call :check "%somevariable%"
:: and check its exit code
if %ERRORLEVEL% equ 0 (
    echo Yes
) else (
    echo No
)

goto :eof

:check
    if "%~nxi"=="" exit /b 0
    :: do a case-insensitive check because Windows would accept ".EXE"
    :: and ".Exe", so we should too.
    if /i "%~xi"==".exe" exit /b 0
    exit /b 1

สำหรับการเปรียบเทียบรหัส Python ที่เทียบเท่า:

if somevar.endswith("\\") or somevar.lower().endswith(".exe"):
    print("Yes")
else:
    print("No")

0

คุณกำลังพยายามทำสิ่งนี้โดยใช้โปรแกรมหรือเพียงครั้งเดียว?

หากคุณต้องการเห็นตัวแปรสภาพแวดล้อมหนึ่งครั้งการพิมพ์echo %variablename%จะใช้งานได้

หากคุณพยายามที่จะทำโดยทางโปรแกรมคุณอาจต้องใช้ VBScript หรือสิ่งที่คล้ายกันเพื่อทำการจัดการสตริงที่ต้องการ ควรมีตัวอย่างในMS Script Repositoryที่สามารถให้คุณเริ่มต้นได้โดยขึ้นอยู่กับสิ่งที่คุณต้องการทำกับตัวแปรเมื่อคุณแยกมันออก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.