Articles of cmd

FOR循环将每个迭代在同一行中用相同的前缀分组

我以一个练习题为例,将其作为一个练习来讨论: 合并pdf文件和相关的文件名 在这个问题上,我试图回答部分成功,因为它已经用更多的信息更新了这个问题。 总结这个问题是一个包含以下内容的文件夹: 123456_ABCD.pdf 123456_EFGH.pdf 123456_IJKL.pdf 111111_ABCD.pdf 111111_EFGH.pdf 222222_IJKL.pdf 222222_WXYZ.pdf 而在一个命令我想得到这样的输出: 123456_ABCD.pdf, 123456_EFGH.pdf, 123456_IJKL.pdf 111111_ABCD.pdf, 111111_EFGH.pdf 222222_IJKL.pdf, 222222_WXYZ.pdf 这里的每一行都假设代表在命令中find的相同前缀 这是我的尝试: @echo off ( copy nul 123456_ABCD.pdf copy nul 123456_EFGH.pdf copy nul 123456_IJKL.pdf copy nul 111111_ABCD.pdf copy nul 111111_EFGH.pdf copy nul 222222_IJKL.pdf copy nul 222222_WXYZ.pdf ) setlocal enabledelayedexpansion :: set _pdffiles= set _prevfiles= for /f […]

收集文件扩展名列表 – “命令行太长”解决方法

我正在使用这个batch file扫描Windows文件系统,并保存该系统中所有文件扩展名的.txt文件: 命令行命令: NameOfBatchFile.bat >List.txt 批文件代码: @echo off set target=%1 if "%target%"=="" set target=%cd% setlocal EnableDelayedExpansion set LF=^ rem Previous two lines deliberately left blank for LF to work. for /f "tokens=*" %%i in ('dir /b /s /a:-d "\\PathOfMyWindowsDirectory"') do ( set ext=%%~xi if "!ext!"=="" set ext=FileWithNoExtension echo !extlist! | find "!ext!" > nul if […]

search给定的文件集并复制到另一个目录

在needToFind.txt文件中有一组给定的文件名,例如: myImage1.jpg,theImage.jpg,parisImage.jpg(这是我将格式化它无关紧要的文件名用逗号或换行符分隔) 还有一个名为/ MyImageFolder的文件夹,其中包含1000个图像,还包含myImage1.jpg,theImage.jpg,parisImage.jpg 我想find那些给出的图像,并将其复制到另一个目录。 我想search给定的文件名在needToFind.txt,目录/文件夹MyImages,其中包含许多图像。 并将创build的图像复制到另一个目录/文件夹,例如MyGivenSetOfImages。 请帮助,这将拯救我的生命。 谢谢

为什么findstr不能正确处理案件(在某些情况下)?

在cmd.exe中编写一些最新的脚本时,我需要使用findstr和正则expression式 – 客户需要标准的cmd.exe命令(不包括GnuWin32,Cygwin,VBS和Powershell)。 我只是想知道一个variables是否包含任何大写字母,并试图使用: > set myvar=abc > echo %myvar%|findstr /r "[AZ]" abc > echo %errorlevel% 0 当%myvar%设置为abc时,实际输出string并将errorlevel设置为0,表示find了匹配项。 但是,全名列表: > echo %myvar%|findstr /r "[ABCDEFGHIJKLMNOPQRSTUVWXYZ]" > echo %errorlevel% 1 不输出该行,并正确地将errorlevel设置为1。 此外: > echo %myvar%|findstr /r "^[AZ]*$" > echo %errorlevel% 1 也按预期工作。 我明显在这里丢失了一些东西 ,即使这只是findstr被破坏的事实。 为什么第一个(范围)正则expression式在这种情况下不起作用? 更奇怪的是: > echo %myvar%|findstr /r "[AZ]" abc > echo %myvar%|findstr /r "[AZ][AZ]" […]

使用Windows cmdrecursion删除0KB文件

我有一些进程,在目录及其子目录中创build一些0KB大小的文件。 如何使用Windows命令提示符从文件系统中删除文件? 任何单一的命令或脚本将执行任务将工作。 我只能运行简单的cmd命令和脚本,在具有受限访问权限的远程计算机上工作。

批处理目录中的所有文件

现在我有一个批处理作业,我写了调用另一个文件,并传递可执行文件需要运行的variables(密码和文件名)。 例如: > cd f:\test\utils > admin import-xml -Dimport.file=f:\DB\file1.xml -Dadmin.db.password=test123 我写了一个这样做的工作,但发现会有多个文件。 用户名和密码永远不会改变,但文件名不同,像15个不同的XML文件 – 也许更快即将到来。 这些文件将始终位于相同的文件夹中。 我可以写一些将处理位于这个目录中的每个文件的东西,而不是像15-20个作业(每个文件一个)。 等待下一个完成之前,或者我可以添加一个3分钟的睡眠,然后开始下一个文件。

的ActivePerl。 .pl文件不再执行,而是在记事本中打开

截至今天上午,我已经在Windows 7中运行perl脚本。 我犯了使用记事本作为打开/ editng我的.pl文件的默认值的错误。 现在,当我尝试从DOS提示符运行未经编辑的.pl文件时,脚本不会执行,而是在Windows资源pipe理器中打开关联的源代码文件。 不pipe复杂程度如何(包括经典的“hello world”),这对我所有的.pl文件都是一样的。 我一直在研究需要registry的变化 – 这一切都很好。 尝试assoc和ftype的变化 – 什么都没有。 尝试重新安装ActivePerl – 没有解决scheme。

如何使用Windowsbatch file检测(和删除)文件是否为空?

如何使用Windowsbatch file检测文件是否为空? 我想删除错误日志,如果他们是空的。 我知道for循环解决scheme,如http://anderwald.info/scripting/windows-batch-delete-all-empty-files-in-a-specified-folder/但我想知道是否有一个更优雅的解决scheme如果您知道需要testing的特定单个文件,因为我可能不希望删除文件夹中的其他零字节文件。

批处理函数参数中有特殊字符的奇怪行为?

假设你运行test.bat "blabla,blabla,^>blabla", "blaby" test.bat实现: @SETLOCAL @ECHO OFF SET list=%~1 ECHO "LIST: %list%" ECHO "ARG 1: %~1" ECHO "ARG 2: %~2" @ENDLOCAL @GOTO :EOF 产出如预期: "LIST: blabla,blabla,>blabla" "ARG 1: blabla,blabla,^>blabla" "ARG 2: blaby" 但是如果你在一个batch file中使用test.bat函数呢? @SETLOCAL CALL :TEST "blabla,blabla,^>blabla", "blaby" @ENDLOCAL @GOTO :EOF :TEST @SETLOCAL @ECHO OFF SET list=%~1 ECHO "LIST: %list%" ECHO "ARG 1: %~1" […]

用path中的空格执行batch file

我有问题通过PowerShell在远程服务器上执行batch file。 用户可以在Servername , 启动或查杀进程, Servicename等popup窗口中select多个意见。 所选项目将保存在variables中。 如果select了所有项目,我想将string合并到一个string并执行命名为这个结果string的批处理脚本。 我尝试按照这篇文章中的描述来做,但批处理脚本不会被执行。 例: [String]$scriptpath="C:\tmp\" [String]$Servername = "xx040" [String]$actionprefix = "kill_process" [String]$action = $($actionprefix) + "-" [String]$Servicename = "service1" [String]$ServiceFullname = $($action) + $($Servicename) + ".bat" $batchPath = $("`"$scriptpath + $ServiceFullname `"") Invoke-Command -ComputerName $Servername -ScriptBlock { cmd.exe /c "`"$batchPath`"" }