如何用BAT读取指定目录下的文件名为变量

如何用BAT读取指定目录下的文件名为变量,第1张

12345678910111213141516@echo off&setlocal enabledelayedexpansionset n=0for /f "delims=" %%a in ('dir /b "F:\11"') do (if /i not "%%a"=="22.txt" (set /a n+=1set "wj!n!=%%a"))for /f "tokens=1* delims==" %%a in ('set wj') do (echo %%b%%a)echo 共有%n%个文件(夹)set /p "a=请输入变量名:"set "a=!%a%!"echo 变量对应的文件(夹)是:%a%pause

找到这个可以参考下。

@echo off

color 0e

echo ◎■◎■◎■◎■◎■◎

echo ■批量文件压缩处理 ■

echo ◎■◎■◎■◎■◎■◎

if EXIST WinRAR的路径临时存储.txt del WinRAR的路径临时存储.txt

echo.

echo ■■■■■■■■■■■■■■■■■■■■■

echo ■使用说明: ■

echo ■将此批处理放入所需压缩的文件夹的父目录■

echo ■■■■■■■■■■■■■■■■■■■■■

echo.

echo ◎◎◎◎◎◎◎◎◎◎◎◎

echo ◎输入Y(yes) 开始程序 ◎

echo ◎输入E(exit)退出程序 ◎

echo ◎◎◎◎◎◎◎◎◎◎◎◎

set choose =

set /p choose=请选择:

if '%choose%'=='y' goto 开始程序

if '%choose%'=='e' (goto :exit) else goto 开始程序

:开始程序

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" /v path>>WinRAR的路径临时

存储.txt

:: 查询注册表中的winrar程序安装路径,并将找到的路径发送到'WinRAR的路径临时存储.txt'文件中去

for /f "tokens=1,2,* skip=4 delims= " %%x in ('more WinRAR的路径临时存储.txt') do set WinRAR的路径=%%z

:: *********************************************************

:: 【1】使用语句:FOR /F ["options"] %variable IN (file-set|"string"|'command') DO command [command-

parameters]

:: 【2】/F:查找字符串或则文件中的特定字符参数。使用后默认方式为查找每个文件(字符串)中的每一行中分开的

第一个空白符号。跳过空白行。

:: 【3】["options"]:您可通过指定可选 "options" 参数替代默认解析 *** 作。这个带引号的字符串包括一个或多个指定

不同解析选项的关键字。这些关键字为:

:: eol=c - 指一个行注释字符的结尾(就一个)

:: skip=n - 指在文件开始时忽略的行数。

:: delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。

:: tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配m-n格式为

一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之

后分配并接受行的保留文本。

:: usebackq - 指定新语法已在下类情况中使用:在作为命令执行一个后引号的字符串并且一个单引号字符为文

字字符串命令并允许在filenameset中使用双引号扩起文件名称。

:: 【4】%variable:指定的参数,在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %

variable。变量名称是区分大小写的,所以 %i 不同于 %I。

:: 【5】file-set|"string"|'command':指定的文件或字符串和目录。

:: 【6】DO command [command-parameters]:1)command为指定对每个文件执行的命令。2)command-parameters为特

定命令指定参数或命令行开关。

:: 【7】整个语句的解析:在文件“in ('more WinRAR的路径临时存储.txt')”中查找特定的字符串,1)先跳过前四行

(skip=4);2)以空格为分隔符(delims= );3)将找到的第一个字符传递给参数x("tokens=1,2,* skip=4 delims=

" %%z);4)找到一个字符后就开始运行do后面的命令。5)将参数l获得的值赋予常量'WinRAR的路径'中(do set

WinRAR的路径=%%z),参数将按照查找的顺序自动将找到的字符串赋予参数z之中,本例中按照顺序“x\y\z”,故z获得

tokens中的符号“*”中的字符串。

:: *********************************************************

if EXIST WinRAR的路径临时存储.txt del WinRAR的路径临时存储.txt

for /f "delims=" %%i in ('dir /ad /b') do call :开始压缩 %%i

:: *********************************************************

:: 【1】dir /ad /b:1)/a为显示所有文件。2)/ad则为跟宽式相同,但文件是按栏分类列出的。3)/b使用空格式(没

有标题信息或摘要)。

:: 【2】call :开始压缩 %%i:调用:'开始压缩',并将获得的字符串赋予参数i中。

:: *********************************************************

echo.

echo ◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎

echo ◎压缩完成 ◎

echo ◎输入R(Repetition) 重新运行 ◎

echo ◎输入E(exit)退出程序 ◎

echo ◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎

echo.

set choose =

set /p choose=请选择:

if '%choose%'=='r' goto 开始程序

if '%choose%'=='e' (goto :exit)

:exit

exit

:开始压缩

set 网站文件夹=%*

"%WinRAR的路径%\rar" a -r -msrarzipjpgjpeggifrmrmvbmp3wavewamwmvmpeg -ag %网站文件夹%.rar %网

站文件夹%

:: *********************************************************

:: [1]-r:连同子文件夹

:: [2]-ag:以当前日期与时间生成压缩文件名

:: [3]-ms:指定不压缩而直接存储的文件类型。当正确使用时,它将有助于增加压缩速度,而不会显著的减小压缩率。

:: *********************************************************

EndLocal

:: *********************************************************

:: [1]EndLocal:结束批处理文件中环境更改的本地化,将环境变量还原为匹配 setlocal 命令前的值。

:: *********************************************************

怎么用bat读取文件(ID.txt)内容为变量

for /f "tokens=*" %%a in (id.txt) do (

set var=%%a

echo %var%

)

pause.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11902550.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存