我尝试使用Batch中的参数扩展删除某些文本中的引号。谁能告诉我为什么这样:
@echo off
setlocal
set args=%*
echo %args:"=%
打印"=
而不是什么?据我所知%args:"=%
应该没有任何内容替换所有引号,所以我不明白为什么会发生这种情况。
任何帮助将不胜感激,谢谢!
编辑:为了澄清,我没有将任何参数传递给批处理脚本。
答案 0 :(得分:3)
这是您未向脚本传递任何参数时获得的结果。
如果未定义args
,则%args:"=%
扩展如下:
%args:
被视为不存在的变量扩展,变为空白"=
被视为自身%
(百分之一)被剥夺这不直观,但恰好是cmd.exe的工作原理。有关详细信息,请参阅https://stackoverflow.com/a/7970912/1012053。
您可以使用if defined
@echo off
setlocal
set args=%*
if defined args echo %args:"=%
答案 1 :(得分:1)
它可以在这里工作
if(empty($name)){
echo 'Name is blank';
exit;
}elseif(empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL) === false){
echo 'Email is invalid';
exit;
}elseif(empty($company)){
echo 'Company is blank';
exit;
}else{
$name = filter_var ($_POST['name'], FILTER_SANITIZE_STRING);
$email = filter_var ($_POST['email'], FILTER_SANITIZE_EMAIL);
$company = filter_var ($_POST['company'], FILTER_SANITIZE_STRING);
$fp = fopen("Daten.txt", "a");
$savestring = $name . "\r\n" . $email . "\r\n" . $company . "\r\n" . "\r\n";
fwrite($fp, $savestring);
fclose($fp);
echo "Thank you ... please stand by ...
<meta http-equiv='Refresh' content='1; URL=.\play\index.html'>";
}
?>
删除echo off显示此
C:\Windows\system32>"C:\Users\User\Desktop\Test2.bat" dog
dog
您没有传递任何命令行参数。
C:\Windows\system32>setlocal
C:\Windows\system32>set args=dog
C:\Windows\system32>echo dog
dog