在批处理文件中怎么使用嵌套for命令?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在批处理文件中怎么使用嵌套for命令?相关的知识,希望对你有一定的参考价值。
高级的办法(不用重复执行命令):比如当前文件夹内所有的jpg文件依次按照1.txt里每行的内容重命名
setlocal enabledelayedexpansion
REM 保存dir的结果到变量a.1,a.2,...,总个数存到变量a.num
set "num=0"
for /f "delims=" %%i in ('dir /o:n /a:-d /b "*.jpg"') do (
set /a "num=!num!+1"
set "a.!num!=%%i"
)
set "a.num=!num!"
REM 保存type的结果
set "num=0"
for /f "delims=" %%i in ('type 1.txt') do (
set /a "num=!num!+1"
set "b.!num!=%%i"
)
set "b.num=!num!"
REM 进行操作
for /l %%i in (1,1,!a.num!) do (
if %%i leq !b.num! ren "!a.%%i!" "!b.%%i!"
)
REM 清除临时变量
for /l %%i in (1,1,!a.num!) do (
set "a.%%i="
)
for /l %%i in (1,1,!b.num!) do (
set "b.%%i="
)
pause 参考技术A for %%a in (c d e f g) do (
for /f %%b in ('dir /ad /b /s "%%a:\*.bat"') do (
echo %%b
)
)
pause
这个就是FOR前套,搜索C,D,E,F,G盘下的所有.BAT文件啦
在一行中替换和剪切或嵌套替换(x2)(批处理文件)
【中文标题】在一行中替换和剪切或嵌套替换(x2)(批处理文件)【英文标题】:Replace and cut or nested replace (x2) in one line (batch-file) 【发布时间】:2015-11-22 23:58:10 【问题描述】:如何在一个命令行中将当前日期和时间转换为不带空格的文件名?
我知道怎么做两行:
set file_name=file_%date%-%time:~0,2%%time:~3,2%%time:~6,2%
rem echo %file_name% return "file_2015-08-01- 85012" and it's not ok
(包含空格)
set file_name=%file_name: =0%
echo echo %file_name% return "file_2015-08-01-085012" and it's ok
(无空格)
但我无法在 *.bat 文件中运行程序 - 我必须运行“原始”*.exe,这需要一行中的所有参数。
【问题讨论】:
看看这个:***.com/a/19799236/388389 【参考方案1】:for /f "tokens=1-6 delims=:/- " %a in ('robocopy "|" . /njh^|find "|"') do echo %a-%b-%c-%d%e%f
【讨论】:
它应该作为参数之一传递给*.exe程序。您不能将“for ...”作为参数传递 - 一种解决方案是传递“file_%date%-%time:~0,2%%time:~3,2%%time:~6,2%”,但是我想要“0”而不是“”(空格)。 @jakson,这个想法不是使用exefile for /f ...
,而是使用for /b ..... exefile file_%a-%b-%c-%d%e%f
。在前面的代码中,将echo
替换为可执行文件以上是关于在批处理文件中怎么使用嵌套for命令?的主要内容,如果未能解决你的问题,请参考以下文章