Scripting ';翻译'。快进,快进

Scripting ';翻译'。快进,快进,scripting,batch-file,Scripting,Batch File,嗨 我想使用这个简单的script.sh: #!/bin/sh filename=$1 echo $filename | sed 's/\([A-Z]\)/ \1/g'; 在script.bat中,但我的计算机不是Windows,因此无法测试它。这个是正确的吗 prueba.bat filename=%1 echo %filename% | sed 's/\([A-Z]\)/ \1/g'; 提前感谢在cmd.exe中,%1%没有任何意义,请使用%1或更好的方法,%1删除可能的引号 另


我想使用这个简单的script.sh:

#!/bin/sh
filename=$1
echo $filename | sed 's/\([A-Z]\)/ \1/g';
在script.bat中,但我的计算机不是Windows,因此无法测试它。这个是正确的吗

prueba.bat 

filename=%1  
echo %filename% | sed 's/\([A-Z]\)/ \1/g';

提前感谢

在cmd.exe中,
%1%
没有任何意义,请使用
%1
或更好的方法,
%1
删除可能的引号

另外,对于sed的文本表达式使用双引号。单引号将传递给sed

 set filename=%~1
 echo.%filename%| sed "s/\([A-Z\)/ \1/g"

在bash中,在
$
表达式周围使用

在cmd.exe中,
%1%
并不意味着什么,使用
%1
或者更好的是,
%1
删除可能的引号

此外,对sed的文本表达式使用双引号。单引号将传递给sed

 set filename=%~1
 echo.%filename%| sed "s/\([A-Z\)/ \1/g"
在bash中,在
$
表达式周围使用

不完全是:

@echo %1| sed "s/\([A-Z]\)/ \1/g"
但是你必须确保你有一个可用的
sed
(或者对于这些工具来说是非常优秀的-如果你只需要特定的东西,我更喜欢GnuWin32,CygWin会给你很多)

您还必须小心使用环境变量,如
filename
。虽然UNIX将在当前shell的上下文中创建它们(因此其效果将受到限制),
cmd.exe
脚本将“泄漏”它们(因此直接使用
%1
)。

不完全是:

@echo %1| sed "s/\([A-Z]\)/ \1/g"
但是你必须确保你有一个可用的
sed
(或者对于这些工具来说是非常优秀的-如果你只需要特定的东西,我更喜欢GnuWin32,CygWin会给你很多)


您还必须小心使用环境变量,如
filename
。虽然UNIX将在当前shell的上下文中创建它们(因此其效果将受到限制),
cmd.exe
脚本将“泄漏”它们(因此直接使用
%1
)。

您需要使用
set
来声明变量,最好使用
@echo off

@echo off
set filename=%1
echo %filename% | sed 's/\([A-Z]\)/ \1/g';

您需要使用
set
来声明变量,最好使用
@echo off

@echo off
set filename=%1
echo %filename% | sed 's/\([A-Z]\)/ \1/g';

Windows cmd.exe不喜欢单引号

echo %filename% | sed "s/\([A-Z]\)/ \1/g";

Windows cmd.exe不喜欢单引号

echo %filename% | sed "s/\([A-Z]\)/ \1/g";

为什么你不干脆等到你有了一台Windows机器再测试它?@ghostdog74这条评论与任何事情有什么关系?为什么你不干脆等到你有了一台Windows机器再测试它?@ghostdog74这条评论与任何事情实际上有什么关系,这对CygWin
sed
没有影响,但我不确定GnuWin32,所以我会更改它。实际上,这对CygWin
sed
没有影响,但我不确定GnuWin32,所以我会更改它。