小编Ste*_*han的帖子

批处理文件,用于删除超过N天的文件

我正在寻找一种方法来删除批处理文件中超过7天的所有文件.我在网上搜索过,发现了一些包含数百行代码的示例,还有一些需要安装额外的命令行实用程序才能完成任务.

只需几行代码就可以在BASH完成类似的工作.对于Windows中的批处理文件,似乎至少可以轻松实现.我正在寻找一个在标准Windows命令提示符下工作的解决方案,没有任何额外的实用程序.请不要使用PowerShell或Cygwin.

windows file-io cmd date batch-file

655
推荐指数
16
解决办法
111万
查看次数

在批处理文件中测试参数是否为空的正确方法是什么?

我需要测试是否设置了变量.我已经尝试了几种技术,但他们忽视了,只要%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)

windows shell cmd batch-file

194
推荐指数
9
解决办法
31万
查看次数

无法在批处理脚本中的同一行中回显

我有包含多行的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

希望你们能帮助我.

谢谢,

布鲁斯

batch-file

8
推荐指数
1
解决办法
673
查看次数

IF 的奇怪结果

受到这个问题及其答案的启发,我做了一些测试。一个答案表明,数字太大(超过 32 位整数)并且它们被截断,但这并不能解释结果。同样显然它不会将双方作为字符串进行比较(正如我所期望的那样)。似乎if感到困惑并认为“好吧,我不知道 - 给它一个真实的”。(使用neq, gtr,lss而不是equ, geqleq总是给出 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)

cmd if-statement

3
推荐指数
1
解决办法
279
查看次数

从powershell在新窗口中调用bat文件

我想从 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 并循环回到开头。

谢谢

孔夫塞斯

windows powershell cmd batch-file

3
推荐指数
1
解决办法
3755
查看次数

如何在 Windows 命令提示符中将多种颜色应用于“线条”?

我是这个网站的新手,我想问你如何在 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)

batch-file windows-10-desktop

2
推荐指数
1
解决办法
164
查看次数

我找到了一些显示/隐藏桌面图标的代码,但是它在此过程中移动了图标。如何编辑代码以不移动图标?

我正在为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。

desktop icons batch-file

0
推荐指数
1
解决办法
3905
查看次数