我正在尝试使用批处理文件来确认使用ping的网络连接.我想批量运行然后打印如果ping成功与否.问题是,它作为批处理运行时始终显示"失败".这是代码:
@echo off
cls
ping racer | find "Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),"
if not errorlevel 1 set error=success
if errorlevel 1 set error=failure
cls
echo Result: %error%
pause
Run Code Online (Sandbox Code Playgroud)
'racer'是我电脑的名字.我正在让我的计算机ping自己,所以我可以消除连接不良的变量.正如我之前所说,批次总是导致失败.奇怪的是,如果我将代码复制到命令提示符中,程序运行正常.有谁知道为什么程序在命令提示符下工作正常但不能作为批处理工作?谢谢
我有一个base形式的字符串*+*。我想得到+之前的所有内容。例如,如果base=foo+bar,我想得到foo。
我尝试过用字符串替换来做到这一点
set left=%base:+*=%
Run Code Online (Sandbox Code Playgroud)
但这会导致left存储foo+bar。
有趣的是,字符串替换可以使 + 的所有内容正确无误:
set right=%base:*+=%
Run Code Online (Sandbox Code Playgroud)
是否+*被替换+(即通配符替换 0 个字符)?有更好的方法来完成我的任务吗?
编辑:我实际上是在 for 循环中执行此操作。因此,延迟扩展已开启并且(我认为)我需要使用!。完整代码在这里:
for /d %%d in (*+*) do (
set base=%%d
set right=!base:*+=!
set left=!base:+*=! ::this part doesn't work
if !left:~-2!==!right:~-2! ( ::do only if last 2 chars match
copy %%d mirrors
copy %%d\%%d_montage.bmp mirrors
)
)
Run Code Online (Sandbox Code Playgroud)
编辑2:上面代码中的注释仅用于此处的可读性。:: 样式的注释在 for 循环中可能无法正常工作。
我通过跟随他们的主页到他们的sourceforge并使用mingw-get-setup.exe 来安装MinGW .这安装了g ++ 4.8.1-4.GCC 4.8 应该支持使用命令行开关的C++ 14,但我只是得到一个"无法识别的选项"错误.
这是MinGW的错误吗?与GCC?我能做些什么呢?因为我知道有人会问,我希望C++ 14用于for-each循环.我现在正在使用迭代器,但for-each会提高可读性和可写性.
编辑:发现我的g ++构建支持c ++ 11,所以我可以使用for-each.但在c ++ 14支持上仍然没有运气.
我想我不明白Windows命令提示符如何评估相等性.我有一个看起来像这样的批处理:
@echo off
set test=12
if (%test% EQU 12) echo true
pause
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这并不是真的.谁能告诉我为什么会这样?
我有一个方法(让我们称它doSomething),它接受一个Map<String,Object>,我想传入一个Map<String,Foo>(当然,Foo extends Object).当我编译时,它说doSomething不能应用于给定的类型.这是我的代码:
public class FooMapChoo {
private Map<String, Foo> map;
public void doSomething(Map<String,Object>) {
}
public static void main(String...args) {
doSomething(map);
}
}
Run Code Online (Sandbox Code Playgroud)
编译器输出:
method doSomething in class FooMapChoo cannot be applied to given types;
doSomething(map);
^
required: Map<String,Object>
found: Map<String,Foo>
Run Code Online (Sandbox Code Playgroud)
在我看来,Foo应该多态地转换为Object.我也试着铸造map到Map<String,Object>,刚刚告诉我,"不可兑换的类型".我该怎么做才能解决多态问题?