标题: [文本处理] 批处理如何批量读取文件名,并定义为变量? [打印本页]
作者: 沙漠之狐 时间: 2018-4-27 13:00 标题: 批处理如何批量读取文件名,并定义为变量?
文件夹中有n个文件,使用命令 for /f "delims=." %%i in ('dir /b "%FolderName%\Day-*-%YYYYmmdd%*.txt"') do (echo %%i) 屏显输出的结果刚好是自己想要的字符。怎么把%%i赋值给变量。如用 ~~~ do (set str=%%i) echo %str% 只显示最后一个文件名(一共有4个文件名);如用 for /f "delims=." %%i in ('dir /b "%FolderName%\Day-*-%YYYYmmdd%*.txt"') do (echo %%i %%j %%k %%l) ,则每个文件名后面多了%j %k %l,求解析指教。用for循环怎么把这4个文件名分别定义为4个变量。谢谢
作者: Batcher 时间: 2018-4-27 14:01
- setlocal enabledelayedexpansion
- set n=0
- for /f "delims=." %%i in ('dir /b "%FolderName%\Day-*-%YYYYmmdd%*.txt"') do (
- set /a n+=1
- set "_!n!=%%i"
- )
- for /f "tokens=1,2 delims==" %%i in ('set _') do (
- echo 变量 %%i 的值是 %%j
- )
复制代码
作者: 沙漠之狐 时间: 2018-4-27 16:32
回复 2# Batcher
延迟变量好复杂,在论坛泡了好久对这个感叹号还是糊里糊涂的,能有简单点的吗?就是这么把文件1赋值给:str1=文件名1;str2=文件名2,str3=文件名3,str4=文件名4;分别echo出来;谢谢
作者: Batcher 时间: 2018-4-27 17:48
回复 3# 沙漠之狐 - setlocal enabledelayedexpansion
- set n=0
- for /f "delims=." %%i in ('dir /b "%FolderName%\Day-*-%YYYYmmdd%*.txt"') do (
- set /a n+=1
- set "str!n!=%%i"
- )
- echo !str1!
- echo !str2!
- echo !str3!
- echo !str4!
复制代码
作者: 沙漠之狐 时间: 2018-4-27 17:56
回复 2# Batcher
不停的折腾,终于把您的代码看明白了,谢谢!!!!
作者: 沙漠之狐 时间: 2018-4-27 18:08
回复 4# Batcher
在您没回复之前,_!n!,n前面这一杠让我想了好久,到底什么意思,又花了2个小时查找set 的定义,发现没这个东西呀,最后在发现另一帖子,相似个例,原来就是一变量字符,我晕,从来见过这么定义变量的。误导我这菜鸟了 。最后又回到输出问题上,echo %_!1!% 不对,echo !_!1!!不对, echo %_1% 不对。echo !_1!对了。我勒个去。最后发现,setlocal disabledelayedexpansion 把它关了,就可以常规 echo %_1%输出了,也不影响后续操作。bat 路漫漫其修远兮!!!!!谢谢您,
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |