我需要测试是否设置了变量.我已经尝试了几种技术,但他们忽视了,只要%1用双引号包围时,如情况%1是"c:\some path with spaces".
IF NOT %1 GOTO MyLabel // This is invalid syntax
IF "%1" == "" GOTO MyLabel // Works unless %1 has double quotes which fatally kills bat execution
IF %1 == GOTO MyLabel // Gives an unexpected GOTO error.
Run Code Online (Sandbox Code Playgroud)
根据此站点,这些是受支持的IF语法类型.所以,我没有办法做到这一点.
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
Run Code Online (Sandbox Code Playgroud) 我有包含多行的txt文件,我需要创建一个日志,以便在日志中存储以下信息:
文件名
最后修改
包含单词"valid"的行数
我把一个.bat文件放在一起,但它将输出分成两行.
type nul > FilesReceived.txt & for %f in (*.log) do (
find /c "valid" %f & echo(%~tf)>> LogsReceived.txt
)
Run Code Online (Sandbox Code Playgroud)
使用nul类型我清除FilesReceived.txt文件的内容.然后我遍历log类型的文件.
然后我计算包含单词valid和find/c的行,并且我也回显最后修改的时间戳.
但是输出看起来像:
---------- transaction_20160505_1005A.log:6492
10/06/2016 04:37 pm
我不知道是什么产生了破灭.最终,我希望每个日志文件有一行,如下所示:
transaction_20012B.log:6492 10/06/2016 04:37 pm
希望你们能帮助我.
谢谢,
布鲁斯
受到这个问题及其答案的启发,我做了一些测试。一个答案表明,数字太大(超过 32 位整数)并且它们被截断,但这并不能解释结果。同样显然它不会将双方作为字符串进行比较(正如我所期望的那样)。似乎if感到困惑并认为“好吧,我不知道 - 给它一个真实的”。(使用neq, gtr,lss而不是equ, geq,leq总是给出 FALSE)。
如果任何一个a和/或b在 32 位整数的边界内或包含 [0-9] 之外的任何字符,则代码按预期工作。
@echo off
set a=333333333333
set b=444444444444
call :compare
set b=222222222222
call :compare
goto :eof
:compare
echo comparing %a% with %b%
if %a% geq %b% (echo a ^>= b) else (echo -)
if %b% geq %a% (echo b ^>= a) else (echo -)
if %a% leq %b% (echo a ^<= …Run Code Online (Sandbox Code Playgroud) 我想从 powershell 内的新窗口/独立实例中启动 bat 文件。
bat 文件将从 powershell 获取计算机名,
例如
mybat.bat $thiscomputer
Run Code Online (Sandbox Code Playgroud)
我试过了
start mybat.bat $thiscomputer
start "cmd /c" mybat.bat $thiscomputer
start /k mybat.bat $thiscomputer
start-process mybat.bat $thiscomputer
Run Code Online (Sandbox Code Playgroud)
通常,bat 确实会运行,但保留在 powershell 脚本内。
我需要 powershell 脚本在新窗口中启动 bat 并循环回到开头。
谢谢
孔夫塞斯
我是这个网站的新手,我想问你如何在 CMD 中按行(或列?)应用多种颜色。随意编辑下面的代码,我也希望文字的颜色与经典的谷歌浏览器颜色相似。
cls
@echo off
color 0a
echo.
echo.
echo.
echo ,,
echo .g8"""bgd `7MM
echo .dP' `M MM
echo dm' ` ,pW"Wq. ,pW"Wq. .P"Ybmmm MM .gP"Ya
echo MM 6W' `Wb 6W' `Wb :MI I8 MM ,M' Yb
echo MM. `7MMF' 8M MB 8M MB Wmmmp" MM 8M""""""
echo `Mb MM YA. ,A9 YA. ,A9 8M MM YM. .
echo `"bmmmdPY `Ybmd9' `Ybmd9' YMMMMMb .JMML. `Mbmmd'
echo 6' dP
echo Ybmmmd'
echo.
echo.
echo.
pause>nul
Run Code Online (Sandbox Code Playgroud) 我正在为Rainmeter使用两个批处理文件,一个用于隐藏所有图标,然后启动Rainmeter,另一个用于显示所有图标,然后退出Rainmeter以使我的桌面恢复正常。
我的最终目标是使这两个批处理文件成为任务栏上的按钮,单击这些按钮可以切换桌面的外观。
到目前为止,我只有两个批处理文件,但它们所做的只是显示和隐藏桌面图标。(我在网上找到了代码,因为我自己无法编写代码)
show.bat
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V HideIcons /T REG_DWORD /D 0 /F
taskkill /f /im explorer.exe
start explorer.exe
Run Code Online (Sandbox Code Playgroud)
hide.bat
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V HideIcons /T REG_DWORD /D 1 /F
taskkill /f /im explorer.exe
start explorer.exe
Run Code Online (Sandbox Code Playgroud)
因此,我发现的代码可以正常工作,但比手动隐藏桌面图标要流畅得多……唯一的问题是,当我运行show.bat时,我的图标又回到了我不希望它们进入的位置。
如何使批处理文件更顺畅地显示/隐藏图标,以及如何不使图标四处移动?
PS:只是想强调一下,我真的不知道我发现的代码是如何工作的,因此您可能必须使用ELI5。
batch-file ×6
cmd ×4
windows ×3
date ×1
desktop ×1
file-io ×1
icons ×1
if-statement ×1
powershell ×1
shell ×1