微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在txt文件中循环并使用batch file列出内容

我试图通过包含每行中的path的.txt(例如folder_list.txt)文件循环,如:

/subdir/folder/node-folder /subdir/folder/node-folder-2 /subdir-2/folder4/node-folder/node-folder-1

我需要使用pushd命令连接到networking驱动器,然后逐行遍历txt文件中的所有这些path,然后仅列出特定格式的文件,如“ .html, .htm, .pdf, .txt”。

假设,当我这样做

pushd \mynetworkdriverootfolder

我的networking驱动器被映射为Z:

批量中的随机文件select“validation”

bash脚本运行各种openssl密码来解密文件

合并两个文件中的文本,输出到另一个文件

可能“循环”和“输出”不能在我的bash脚本中正常工作

在按下键时停止C ++中的无限循环

这是我创build的batch file:

@echo on cls cd /d "Z:" for /F "tokens=*" %%A in (C:Usersuser1Desktopnetworkfolder_list.txt) do ( set location = %%A cd location @echo %location% dir /S/Q *.htm,*.html,*.aspx,*.asp,*.PHP >> C:Usersuser1Desktopnetworkfiles_search_output.csv ) echo "cd" pause

循环开始,但它遍历networking驱动器的所有目录,而不是那些在我的folder_list.txt文件中。

不知道我在哪里不正确。 我做了大量的研究,find可能的解决scheme,但无法解决问题的原因

如何在for循环内dynamic引用数组? 批量

Cmultithreading处理,意外的cpu消耗

如何循环通过命令的输出

在读取行时,awk $行带有多个分隔符

如何使用for循环在bash脚本中复制和重命名文件

@echo on cls cd /d "Z:" for /F "tokens=*" %%A in (C:Usersuser1Desktopnetworkfolder_list.txt) do ( pushd %%A echo %%A dir /S/Q *.htm,*.PHP >> C:Usersuser1Desktopnetworkfiles_search_output.csv popd ) echo "cd" pause

一个问题 – 在一个字符串set , 两个空格是重要的。 因此,您将值分配给“位置空间 ”

第二个问题 – 如果在一个代码块(括号内的命令序列)内改变一个普通的环境变量(比如location )的值,你需要使用delayed expansion – 在SO上查看关于这个主题的无尽的文章

接下来,中间的cd没有任何效果,因为在遇到for关键字时没有定义location

接下来 – 你的cd回到根目录只是echo (我离开了)

简单的方法 – 不需要cd s – PUSHD所需的目录,当您完成该目录中的命令时, POPD回到执行PUSHD时所在的PUSHD

潜在的问题:winbatch中的路径分隔符是 – /被用作开关指示符。 有时候winbatch做转换。 其他,不是。

如果你真的拥有/在文件中,那么你确实需要将变量从%%A传递给一个常规变量,因为对元变量的字符串操作不被支持,所以你可能需要

插入一行

setlocal enabledelayedexpansion

在@echo off后

改回

set "location=%%A" set "location=!location:/=!" pushd !location!

setlocal enabledelayedexpansion命令调用delayed expansion模式,其中!var! 提取变量的当前 (运行时间)值(而%var%是块被解析时的值)

在变量的值内,以下set将更改为 。 引号确保任何尾部空格不包含在赋值中。

请注意@简单地抑制认的“回显命令到屏幕”模式。 @echo off关闭echo-command-to-screen(自启动@自身被抑制)。 此后不需要在批处理中使用@echo 。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐