[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何批量读取文件名,并定义为变量?

文件夹中有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个变量。谢谢

  1. setlocal enabledelayedexpansion
  2. set n=0
  3. for /f "delims=." %%i in ('dir /b  "%FolderName%\Day-*-%YYYYmmdd%*.txt"') do (
  4.     set /a n+=1
  5.     set "_!n!=%%i"
  6. )
  7. for /f "tokens=1,2 delims==" %%i in ('set _') do (
  8.     echo 变量 %%i 的值是 %%j
  9. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher
延迟变量好复杂,在论坛泡了好久对这个感叹号还是糊里糊涂的,能有简单点的吗?就是这么把文件1赋值给:str1=文件名1;str2=文件名2,str3=文件名3,str4=文件名4;分别echo出来;谢谢

TOP

回复 3# 沙漠之狐
  1. setlocal enabledelayedexpansion
  2. set n=0
  3. for /f "delims=." %%i in ('dir /b  "%FolderName%\Day-*-%YYYYmmdd%*.txt"') do (
  4.     set /a n+=1
  5.     set "str!n!=%%i"
  6. )
  7. echo !str1!
  8. echo !str2!
  9. echo !str3!
  10. echo !str4!
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    不停的折腾,终于把您的代码看明白了,谢谢!!!!

TOP

回复 4# Batcher


    在您没回复之前,_!n!,n前面这一杠让我想了好久,到底什么意思,又花了2个小时查找set 的定义,发现没这个东西呀,最后在发现另一帖子,相似个例,原来就是一变量字符,我晕,从来见过这么定义变量的。误导我这菜鸟了 。最后又回到输出问题上,echo %_!1!% 不对,echo !_!1!!不对, echo %_1%  不对。echo !_1!对了。我勒个去。最后发现,setlocal disabledelayedexpansion  把它关了,就可以常规 echo %_1%输出了,也不影响后续操作。bat 路漫漫其修远兮!!!!!谢谢您,

TOP

返回列表