我想使用DOS在文件中找到一个字符串:
例如
找到"string"status.txt
当找到它时,我想运行一个批处理文件.
做这个的最好方式是什么?
我在批处理文件中有这一行:
Test.exe %*
Run Code Online (Sandbox Code Playgroud)
我在谷歌搜索,我发现这个解释:
某些DOS版本使用此符号和百分号(%*)表示批处理文件中命令行上的所有参数.
但是我仍然不明白如何使用这个命令......
谢谢!
如果我使用以下方法迭代每个文件:
@echo off
FOR %%f IN (*\*.\**) DO (
echo %%f
)
Run Code Online (Sandbox Code Playgroud)
我怎么能打印每个文件的扩展名?我尝试将%% f分配给临时变量,然后使用代码:echo "%t:~-3%"打印但没有成功.
是否可以在Windows窗体或C#2.0中的用户控件中嵌入DOS控制台?
我们有一个我的Windows应用程序必须与之交互的遗留DOS产品,并且已经请求遗留产品的实例应该在Windows应用程序中运行.
目前,我正在使用user32.dll找到运行DOS产品的窗口,最小化然后最大化窗口,并在窗口中键入字符.这不是解决问题的非常好的解决方案,因为这意味着我的应用程序必须将窗口名称存储在应用程序设置中,并要求用户在使用交互功能之前返回到DOS应用程序的正确页面.
编辑:更多信息
遗留应用程序需要对用户可见,但不能在单独的窗口中显示.
我已经尝试了TimothyP的答案并且效果很好,但它是否可以实现相同的功能,但DOS窗口可视化地嵌入在窗体或用户控件中,而不是弹出它自己的窗口?优选地,以ShowDialog()方式使得用户不能与应用程序交互,他们处于"传统模式",可以这么说.
使用Cygwin时,我经常复制Windows路径并手动将所有斜杠编辑为Unix格式.例如,如果我正在使用Cygwin并且需要更改目录,请输入:
cd C:\windows\path
Run Code Online (Sandbox Code Playgroud)
然后编辑它
cd C:/windows/path
Run Code Online (Sandbox Code Playgroud)
(通常,路径比这长得多).有没有办法使用sed或其他东西自动执行此操作?例如,我尝试过:
echo C:\windows\path|sed 's|\\|g'
Run Code Online (Sandbox Code Playgroud)
但得到以下错误
sed: -e expression #1, char 7: unterminated `s' command
Run Code Online (Sandbox Code Playgroud)
我的目标是减少打字,所以也许我可以编写一个我可以调用的程序.理想情况下我会输入:
conversionScript cd C:/windows/path
Run Code Online (Sandbox Code Playgroud)
这相当于键入:
cd C:\windows\path
Run Code Online (Sandbox Code Playgroud) 我试图获取一个文件夹,其中包含几个.csv文件,并将所有这些文件及其中的信息组合到一个使用MS DOS的文件中.有什么建议?
我正在编写一个批处理文件来验证几个文件.当其中一个文件无效时,我希望批处理脚本停止并返回错误代码> 0.下面的代码似乎可以完成这项工作,但调用"EXIT 2"将关闭运行脚本的命令提示符窗口.
:Validate
SETLOCAL
Validator %1
IF %ERRORLEVEL% GEQ 1 EXIT 2
ENDLOCAL
Run Code Online (Sandbox Code Playgroud)
有关如何在不关闭命令提示符的情况下返回错误代码的任何想法?
我知道你可以附加到批处理文件的末尾,如此...
echo I like turtles >> file.txt
Run Code Online (Sandbox Code Playgroud)
但我想改写文件.怎么可以这样做?
我在DOS批处理文件中运行时试图获取SQL语句的值...
sqlcmd -E -S DEVSERVER -Q "SELECT COUNT(1) as [CaseCount] FROM Cases"
Run Code Online (Sandbox Code Playgroud)
我不是在这个stackoverflow问题之后的错误级别之后,而是在我从数据库返回的实际计数之后,所以我可以做一些额外的逻辑.
是的,我的意思是真正的MS-DOS,而不是Windows的cmd.exeshell控制台.
有没有办法检查MS-DOS中的密钥是否已关闭GetAsyncKeyState(),类似于WinAPI中的功能?
目前我正在使用kbhit()和getch(),但它真的很慢,在第一个字符后有延迟,不允许同时有多个键等.
我正在使用Turbo C++ 3.1.有人可以帮忙吗?
(顺便说一下,不要问为什么我在这样一个古老的系统上编码我的游戏)