该forfiles命令建立了几个变量,由一个领先的 表示,这些变量@将有关当前迭代项的数据返回到循环体。
所有与迭代项的路径和名称相关的变量都返回包含在 中的值""。这些是:@file,@fname,@ext,@path和@relpath。
那么:你怎么能摆脱封闭的双引号呢?
例如,以下代码返回给定根目录中文本文件的相对路径:
forfiles /P "C:\root" /M "*.txt" /C "cmd /C echo @relpath"
Run Code Online (Sandbox Code Playgroud)
假设C:\root包含两个文件file1.txtand file2.txt,输出将是:
".\file1.txt"
".\file2.txt"
Run Code Online (Sandbox Code Playgroud)
但是,我想要没有周围"".
我在 Windows 7 64 位上工作。
我已经看到了如何使用遍历目录的批处理文件并处理与通配符表达式匹配的各种文件的示例,例如:
FOR %%f IN (*.ext) DO (
ECHO Found ext file %cd%\%%f
)
Run Code Online (Sandbox Code Playgroud)
以上内容仅匹配.ext当前目录中的文件.但是如果我只想匹配一个确切的文件名,如果它存在于该目录中呢?我想要的东西:
FOR %%f IN (someFile.ext) DO (
ECHO Found our file name in %cd%
)
Run Code Online (Sandbox Code Playgroud)
然而,这似乎不起作用; 该FOR命令将"somefile.ext"解释为字符串,并始终运行FOR循环一次.如何尝试匹配当前目录中的确切文件名,没有通配符?
因此,我尝试使用名为 ImageResizer 的程序和命令 一次重新缩放一堆图像forfiles。
但由于我必须对命令本身及其内部的参数使用引号,因此这是行不通的:
ERROR: Argument/Option invalid- '4x /save @FILE'.
Run Code Online (Sandbox Code Playgroud)
如何批量处理这两个字符串?我发现了一些类似的问题,但我没有让它发挥作用。
这是我的代码:
@echo off
cd %~dp0
cd gfx
forfiles /s /m *.png /c "C:\Users\Manu\Desktop\NeuerOrdner\ImageRes.exe /load @FILE /resize auto "XBR 4x" /save @FILE"
pause
Run Code Online (Sandbox Code Playgroud) 在perl如果你需要运行一个批处理文件,它可以通过下面的语句来完成.
system "tagger.bat < input.txt > output.txt";
Run Code Online (Sandbox Code Playgroud)
这里tagger.bat是批处理文件,input.txt是输入文件,output.txt是输出文件.
我想知道是否有可能做到这一点Node.js ?如果有,怎么样?
我试图使用该rem命令在包含多个命令的命令行中添加注释.以下是一些例子来说明我的意思:
echo Hello & rem.Comment & echo world!
(echo Hello & rem.Comment) & echo world!
Run Code Online (Sandbox Code Playgroud)
这完全正常,echo每行中的两个命令都按照我的预期执行.在.似乎修改的行为rem命令,使其不把剩余的行注释:
Run Code Online (Sandbox Code Playgroud)Hello world!
如果我放置一个SPACE(或任何其它的分隔符TAB,,,;,=)代替.,剩余线,因此,第二echo将被忽略(为一个第二实例More?出现提示,由于)是上述表示的部分和cmd期望的关闭)由于():
Run Code Online (Sandbox Code Playgroud)Hello
我发现旁边.,下列字符以及工作::,/,\,[,]和+.
还有什么工作是逃脱分隔符:^SPACE,^TAB,^,,^;和^=. …
我构建了一个批处理程序,我目前正在调整该程序以使其更具可读性/用户友好性。
我希望我的.bat文件自动设置为在.bat文件本身中最大化。
我在START /MAX网上阅读了有关内容,但这只会打开一个命令提示符窗口的新实例。我不想有两个.bat文件只是为了最大化一个。
我知道最大化的 Windows 键是ALT+ SPACEthen X。我有一个想法,也许我可以使用某种SendKeys批处理脚本来自动化它?我没有运气在网上找到信息。
无论如何,是否可以将其编程为在同一.bat实例中最大化?
我知道文件名,比如说myfile.pdf. 但我不知道它的位置,因为我的 Web 应用程序临时创建了它。当用户与应用程序断开连接时,我希望删除此文件。那么如何搜索和删除文件呢?
假设我们有一个文本文件sample.txt:
Run Code Online (Sandbox Code Playgroud)one two ...
现在我们要删除第一行:
Run Code Online (Sandbox Code Playgroud)two ...
一个快速的方式做到这一点是使用输入重定向,set /P以及findstr1(我知道有使用其他方法more或for /F,但让我们忘记他们现在):
@echo off
< "sample.txt" (
set /P =""
findstr "^"
)
Run Code Online (Sandbox Code Playgroud)
输出将按预期进行.
然而,当我更换输入重定向为什么是空的输出<通过type与管道|:
@echo off
type "sample.txt" | (
set /P =""
findstr "^"
)
Run Code Online (Sandbox Code Playgroud)
当我更换set /P =""的pause > nul,输出的是什么,我期待的-输入文件输出,但与第一行的丢失的第一个字符(因为它是由消耗pause).但为什么set /P似乎消耗所有东西而不是像重定向<方法一样只消耗第一行?那是一个错误吗?
对我来说,似乎set /P无法充分初始化到管道数据的读指针.
我在Windows 7和Windows 10上看到了这种奇怪的行为.
变得更加奇怪:当多次调用包含管道的脚本时,例如通过类似循环for /L %I in …
我有一个文件夹c:\data\_backup。我想将文件data夹中的所有文件复制到_backup,然后run.cmd在该文件夹中创建了一个脚本,_backup但没有成功,因为它说:
Run Code Online (Sandbox Code Playgroud)Can not perform a cyclic copy 0 File (s) copied Press any key to continue. . .
我使用以下脚本:
cd..
xcopy ".\*" "%cd%\_backup\%date:~-4,4%-%date:~4,2%-%date:~7,2%" /s /i /y
pause
Run Code Online (Sandbox Code Playgroud) 我想使用 cmd.exe 的fc命令比较 2 个文本文件。但是,它也会打印不匹配行的上方和下方行。我该如何抑制这种行为?
a.txt
32=10500.3000000 31=5252.8095 30=XXXX 75=20170208 00:32:40 6=5252.8095 60=20170208-00:00:03
b.txt
32=10500.3000000 31=5252.8095 30=年 75=20170208 00:32:40 6=5252.8095 60=20170208-00:00:03
命令-fc /l /n /c /t /lb200 a.txt b.txt1
输出 比较文件a.txt和B.TXT
***** a.txt
2:31=5252.8095
3:30=XXXX
4:75=20170208 00:32:40
***** B.TXT
2:31=5252.8095
3: 30=年
4:75=20170208 00:32:40
*****
我想要的是
***** a.txt
3:30=XXXX
***** B.TXT
3: 30=年
*****
batch-file ×10
cmd ×7
windows ×6
for-loop ×3
comments ×1
difference ×1
javascript ×1
node.js ×1
pipe ×1
quotes ×1
string ×1