Percent Signs Stripped from Batch File Text(batch中需要两个%)

http://forum.sysinternals.com/batch-file-problems-with-xp_topic13569.html

I am trying to convert a batch file script I wrote for Windows 98SE to run under XP however I've encountered a really annoying problem and not entirely sure how to fix it.

My script starts by drag and dropping a file to the shortcut (the batch file) on my desktop.
The batch file then evaluates %1 if null it runs notepad to edit itself otherwise it continues to run the rest of commands.
The code seems to fail under XP if the filename + path passed to %1 contains spaces but not under 98SE since it generates short file names with drag and drop.

To illustrate the problem I wrote a simple batch file called test.bat

Quote
@echo off
if "%1" == "" goto null
echo.
echo found this - %1
goto end

:null
echo.
echo nothing was passed
goto end

:end


Running test.bat

>test.bat
nothing was passed

>test.bat test
found this - test

>test.bat test "C:\Documents and Settings\User\Desktop\procexp.exe"
and was unexpected at this time.

"and was unexpected at this time." - and what is that supposed to mean??

Any suggestions??

Richard S.
Back to Top
molotov View Drop Down
Moderator Group
Moderator Group
Avatar

Joined: 04 October 2006
Status: Offline
Points: 17492
Post Options Post Options   Thanks (0) Thanks(0)   Quote molotov Quote  Post ReplyReply Direct Link To This Post Posted: 07 February 2008 at 2:50pm
Hi Richard,
 
Try:
test.bat "hamster chicken goat"
 
You'll get "chicken was unexpected at this time".
 
Try changing it to:
if "%%1" == "" goto null
(add an extra '%').


Edited by molotov - 07 February 2008 at 2:52pm
Daily affirmation:
net helpmsg 4006

=======

http://support.microsoft.com/kb/75634

Percent Signs Stripped from Batch File Text

This article was previously published under Q75634

SUMMARY
Using a percent sign (%) in a batch file requires that two percent signs (%%) be...

Using a percent sign (%) in a batch file requires that two percent signs (%%) be specified.

For example, the command to display "5%" from a batch file would be :
   ECHO 5%%
				

MORE INFORMATION
MS-DOS uses %1, %2, ... %9 as replaceable command line parameters. For example,...

MS-DOS uses %1, %2, ... %9 as replaceable command line parameters. For example, before executing the command ECHO %1, %1 will be replaced with the first parameter passed to the batch file. %0 is replaced with the command used to execute the batch file.

A single percent sign on a line is treated as a "nul" character in a batch file. For example:
   ECHO %     is processed as ECHO
   ECHO a%b   is processed as ECHO ab
				
If a command contains two percent signs, MS-DOS will treat any characters between them as an environment variable to be expanded. For example, if the SET command shows that the current environment variables are
   COMSPEC=C:\COMMAND.COM
   PATH=C:\DOS
   PROMPT=$P$G
   B=C
				
then
   ECHO %PATH%     is processed as ECHO C:\DOS
   ECHO a%b%       is processed as ECHO aC
   ECHO a%b b%a    is processed as ECHO aa
				
If there are no characters between the two percent signs, one percent sign is stripped off and the other will remain. This is why a FOR command that echos the name of each file with a .COM extension would be
   FOR %V IN (*.COM) DO ECHO %V
				
but if the same command is placed in a batch file, the following is required:
   FOR %%V IN (*.COM) DO ECHO %%V
				
Reference(s):

"Microsoft MS-DOS Batch File Quick Reference," Microsoft Press.

APPLIES TO
  • Microsoft MS-DOS 3.1
  • Microsoft MS-DOS 3.2 Standard Edition
  • Microsoft MS-DOS 3.21 Standard Edition
  • Microsoft MS-DOS 3.3 Standard Edition
  • Microsoft MS-DOS 3.3a
  • Microsoft MS-DOS 4.0 Standard Edition
  • Microsoft MS-DOS 4.01 Standard Edition
  • Microsoft MS-DOS 5.0 Standard Edition
  • Microsoft MS-DOS 5.0a
  • Microsoft MS-DOS 6.0 Standard Edition
  • Microsoft MS-DOS 6.2 Standard Edition
  • Microsoft MS-DOS 6.21 Standard Edition
  • Microsoft MS-DOS 6.22 Standard Edition
Keywords: 
KB75634
Retired KB Article Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值