简体   繁体   中英

windows bat file cannot comment out this

I am trying to comment out some useful hints. I followed this Stack Overflow page to apply the most defensive comment - using double quotes. Comment error . But I still get error

This is my simple script: test_comment.cmd

@echo off

:: "   %~nI        - expands %I to a file name only "
:: "   %~xI        - expands %I to a file extension only "
for /F "delims=" %i in ("c:\foo\bar baz.txt") do @echo %~nxi

This is the error I got when I run it

>test_comment
The following usage of the path operator in batch-parameter
substitution is invalid: %~nI        - expands %I to a file name only "


For valid formats type CALL /? or FOR /?
The syntax of the command is incorrect.

If I removed those two commented lines, error would disappear; so that I know the comment didn't work.

How should I comment out those two lines?

I really don't want to delete them.

I am using windows 10, latest patch, default cmd.exe.

I followed the link in @Stephan's comment and read: Batch Line Parser

Phase 0) Read Line:

Phase 1) Percent Expansion:

Phase 2) Process special characters, tokenize, and build a cached command block

In short: Comment is parsed in Phase 2, after the Percent Expansion in Phase 1.

Solution: use % to escape the % in the comment, as suggested by @Magoo in the comment.

@echo off

:: "   %%~nI        - expands %%I to a file name only "
:: "   %%~xI        - expands %%I to a file extension only "
for /F "delims=" %%I in ("c:\foo\bar baz.txt") do @echo %%~nxI

Then I got the desired result

>test_comment
bar baz.txt

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM