找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31343|回复: 5

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

[复制链接]
发表于 2018-4-27 13:00:40 | 显示全部楼层 |阅读模式
文件夹中有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个变量。谢谢
发表于 2018-4-27 14:01:05 | 显示全部楼层
  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. )
复制代码
 楼主| 发表于 2018-4-27 16:32:40 | 显示全部楼层
回复 2# Batcher
延迟变量好复杂,在论坛泡了好久对这个感叹号还是糊里糊涂的,能有简单点的吗?就是这么把文件1赋值给:str1=文件名1;str2=文件名2,str3=文件名3,str4=文件名4;分别echo出来;谢谢
发表于 2018-4-27 17:48:53 | 显示全部楼层
回复 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!
复制代码
 楼主| 发表于 2018-4-27 17:56:41 | 显示全部楼层
回复 2# Batcher


    不停的折腾,终于把您的代码看明白了,谢谢!!!!
 楼主| 发表于 2018-4-27 18:08:21 | 显示全部楼层
回复 4# Batcher


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

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:16 , Processed in 0.019547 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表