为了构建自动卸载脚本,我一直在努力使用 WMIC 批量获取特定输出。我遇到的问题是,我尝试删除的应用程序的卸载程序是在每个系统上自动生成的 SSID 下创建的(例如:C:\ProgramData{07BFF8FA-C12F-46C7-8239-8EE83E21B5DA}\程序名\Uninstall.exe)。因此,我无法根据注册表构建静态卸载位置,因为卸载程序字符串也位于注册表中的相同 SSID 下。
我尝试了几种不同的方法来提取卸载信息,而我唯一接近的方法是使用 WMIC:
wmic product where "Name like '%product name%'" get name
Run Code Online (Sandbox Code Playgroud)
输出:
Name
<product-name>
Run Code Online (Sandbox Code Playgroud)
^ 和一个额外的回车,那个回车是问题所在。它设置变量,然后清除它。
这是我试图用来让它工作的 for 循环:
@echo off
for /f "skip=1 delims==" %%a in (
'wmic product where "Name like '%product-name%' get name'
) do set PROD=%%a
echo %PROD%
Run Code Online (Sandbox Code Playgroud)
输出:
C:\Users\Administrator>ECHO is off.
Run Code Online (Sandbox Code Playgroud)
这意味着 %PROD% 变量根本没有定义。
如果我使用 @echo ON 运行批处理,我会得到:
:\Users\Administrator>echo <product-name>
<product-name>
:\Users\Administrator>echo
ECHO is on.
Run Code Online (Sandbox Code Playgroud)
请注意,输出缺少驱动器号。这正是我所看到的,所以很奇怪,而且正在设置参数,然后回显然后取消设置。
我也尝试通过文本文件中继来做到这一点:
wmic /OUTPUT:%~dp0\wmic.txt product where "Name like '%product-name%'" get name
for /f …Run Code Online (Sandbox Code Playgroud) 我想将文件夹中的所有文件重命名为随机名称,但它想将所有文件重命名为相同的名称:
ren "c:\Test\*.txt" %Random%.txt
pause
Run Code Online (Sandbox Code Playgroud)
输出:
C:\Users\Oliver\Desktop>ren "c:\Test\*.txt" 9466.txt
A duplicate file name exists, or the file
cannot be found.
A duplicate file name exists, or the file
cannot be found.
A duplicate file name exists, or the file
cannot be found.
A duplicate file name exists, or the file
cannot be found.
A duplicate file name exists, or the file
cannot be found.
A duplicate file name exists, or the file
cannot be found.
C:\Users\Oliver\Desktop>pause
Press any key to …Run Code Online (Sandbox Code Playgroud) 是否有一种简单且性能良好的方法可以逐行读取两个(甚至更多)文本文件?所以要有一个循环,在每次迭代中读取每个文本文件的一行.
for /F给出多个文件的循环不能使用,因为这会一个接一个地读取文件.嵌套的这样的循环当然也没有意义.
我正在尝试清除公共目录,因此,当某项内容超过30天时,应将其删除。我使用以下命令设置了批处理文件:
forfiles /p "C:\PATH\USERS\PATH\" /s /m *.* /c "cmd /c Del @path /q" /d -30
Run Code Online (Sandbox Code Playgroud)
这很好。但是,问题在于,它仅删除路径内文件夹中的项目。
示例:C:\PATH\USERS\PATH\HelloWorld\file.text已超过30天。但是该命令仅删除file.text,而不删除文件夹。
我是否需要检查文件夹是否为空,然后使用另一个命令删除该文件夹?
这是我的TXT文件:
Volume in drive N is ABSdrive
Volume Serial Number is BLA - BLA
Directory of n:\ggg\gggg\ggg\ggggg
25/10/2016 09:46 138,813 gggggg.csv
1 File(s) 00000 bytes
0 Dir(s) 00000000 bytes free
Run Code Online (Sandbox Code Playgroud)
我需要的是.txt文件只有这一行
25/10/2016 09:46 138,813 gggggg.csv
Run Code Online (Sandbox Code Playgroud)
顶部或底部没有空行只是带有此信息的1行文本文件.
是否可以通过使用.bat文件来实现它?
我想创建一个批处理文件来在对自身进行一些更改后启动我的可执行文件。
我的批处理文件是:
START /D "C:\Users\me\AppData\Roaming\Test\Test.exe"
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我只是得到了短暂的控制台闪烁,并且 Test.exe 没有启动。
我已经验证 EXE 是否在目录中。我已手动启动 exe 以验证它是否正常工作。
我的批处理文件位于
C:\Users\admin\AppData\Roaming\run.bat"
Run Code Online (Sandbox Code Playgroud) 有没有在命令提示符(CLI)的任何命令,这将允许文本字符串被复制到设备的剪贴板...喜欢,对于一个实例,
@echo off
set /p text=Enter text to be copied to clipboard:
--some command here to copy the %text% to clipboard--
Run Code Online (Sandbox Code Playgroud) 我们假设我有这个代码:
@echo off
set "var=value"
echo %var%
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:如何回显文件中设置的所有变量?
我知道你可以这样做:
set
Run Code Online (Sandbox Code Playgroud)
它将显示所有变量.它显示:
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\foma\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
...
Run Code Online (Sandbox Code Playgroud)
我希望它显示:
var=value
Run Code Online (Sandbox Code Playgroud)
我知道我可以set var显示所有以变量开头的变量var,但在我的情况下,我的所有变量都是从另一个批处理文件"导入"的,因此我不知道变量名称是如何开始的.有任何想法吗?
我目前正在尝试使用命令提示符重命名多个文件,但我无法让它工作。
这就是我正在尝试做的事情。
我正在尝试重命名这些文件
file_aaa_001.jpeg
file_bbb_002.jpeg
file_ccc_003.jpeg
Run Code Online (Sandbox Code Playgroud)
到以下文件:
001.jpeg
002.jpeg
003.jpeg
Run Code Online (Sandbox Code Playgroud)
我知道这是超级初学者水平,但如果能得到一些帮助我会很棒。
编辑:序列“aaa”不一定是相同的三个字母,它可以是任意数量的随机字母。所以为了更清楚,我想删除从乞求到第二个“_”的字母。谢谢
我想知道是否有一种方法可以在运行某个命令后最小化批处理窗口。我已经知道启动/ min和最小化启动窗口的技巧,但是在运行循环或超时时该怎么办?
比方说:
echo Hello!
timeout /t 100
:COMMAND TO MINIMIZE WINDOW WHILE TIMEOUT IS RUNNING
Run Code Online (Sandbox Code Playgroud)
现在,我在bat文件中调用一个autoit脚本,以在命令运行时隐藏窗口:
WinSetState($application_name, "", @SW_HIDE)
Run Code Online (Sandbox Code Playgroud)
但我正在寻找可以直接在.bat文件中编码的纯批处理/ powershell / vbs解决方案。
感谢您的时间!
batch-file ×9
cmd ×7
windows ×4
copy ×1
file-rename ×1
minimize ×1
powershell ×1
random ×1
vbscript ×1
window ×1
wmic ×1