如何跳过在批处理文件中发现的错误并继续执行命令行?

Posted

技术标签:

【中文标题】如何跳过在批处理文件中发现的错误并继续执行命令行?【英文标题】:How to skip error found in a batch-file and continue executing the command line? 【发布时间】:2019-09-05 23:38:32 【问题描述】:

我正在使用 Windows 命令处理器 (cmd.exe) 来扫描服务器中的所有文件。我的目标是拥有一个.txt 文件,其中包含名称文件及其所在位置,(以便更快地搜索)

这是我的代码:

P:
DIR *.* /P /Q /S > C:\Users\aperea01\eng.TXT

Z:
DIR *.* /P /Q /S > C:\Users\aperea01\CADUsers.TXT

R:
DIR *.* /P /Q /S > C:\Users\aperea01\eng_restricted.TXT

批处理文件实现了它的目标,但如果我找到一个我无权访问的文件夹,批处理文件就会停止工作。它确实会写入并保存最后找到的文件,但无法继续。

有没有办法跳过Access denied 错误并继续扫描服务器?

提前致谢。

PZR 是我电脑中的一些映射网络驱动器。

【问题讨论】:

你不认为这是/p 开关吗?输入dir /? 嗨@Noodles,/P 不是根本原因,即使我从批处理文件中删除它,在许多文件之后,当它找到一个私人文件夹(访问受限的个人文件夹) ,代码保存信息并退出 CMD(Windows 命令处理器)。您在 DIR 上是正确的。 【参考方案1】:
(FOR /R "P:\" %G IN (.) DO @PUSHD %G && @DIR /Q & @POPD) >> "C:\Users\aperea01\eng.TXT"

这将遍历P:\ 中的所有子文件夹,并且仅在命令能够将PUSHD(更改目录)进入其中时才运行DIR /Q(带有所有者的标准列表)。所有输出都重定向到eng.TXT。希望这可以防止您遇到Access denied 问题,尽管我无法复制您描述的场景。

【讨论】:

以上是关于如何跳过在批处理文件中发现的错误并继续执行命令行?的主要内容,如果未能解决你的问题,请参考以下文章

跳过在 Windows 98 批处理文件中输入新日期

使用heidilsql执行sql时,遇到错误,怎么跳过继续执行

如果出现错误,如何获取批处理文件 .bat 继续执行下一条语句

如何跳过重复索引上的错误并继续在 MongoDB 中进一步添加文档(pymongo)

dos下执行bat文件,如何让两个命令之间自动延迟3秒后再继续执行?

maven:如何通过命令行选项跳过某些项目中的测试?