2017-02-06 50 views
-1

我想创建一个批处理文件,它将从某个(服务器)路径中删除某个文件。以下代码将删除123.pdf,但如果我没有特别提及文件名,它会询问我是否要删除该文件夹的所有内容。批处理:仅删除指定文件的命令

的路径和文件名是由汽车另一个脚本有时结果插入将是空的,这意味着没有任何文件的名称将被插入。 我将它设置为不会提示是/否许可,这很危险,因为如果没有给出文件名,它将删除整个文件夹的内容。

我只希望它只删除一个确切的命名文件,当/如果在命令行中只包含路径,没有文件名 - 跳过不删除任何内容。

例:

del "\\tbiscan\SCAN\Dosare de executare scanate\Curtea de Apel Bacau\BACAU\280555A\123.pdf" 

请帮

+1

您如何向我们展示所有涉及的代码。 – Squashman

回答

1

您可以

2>nul (<"%targetFile%" break) && del "%targetFile%" 

Asumming的%targetFile%变量尝试包含参考文件(或文件夹)中删除此代码:

  • 尝试使用输入重定向操作符打开文件以进行读取(break命令对文件不做任何操作,但我们需要一个不会引发错误级别的命令,但不必使用break,如call;或可以使用type nul)。
    • 如果文件可以打开就不会出现任何错误,条件运算符&&(如果以前没有失败,则执行下一个命令)将执行del命令。
    • 如果文件无法打开(不可读,它是一个文件夹,它不存在),无法执行重定向,并生成错误(由2>nul隐藏)和&&条件运算符之后的命令没有执行。
+0

我觉得这可以工作(我会在接下来的几分钟内测试它),但是这不会减慢这个过程吗? – MisterA

+0

@MisterA,它不应该。如果存在,文件不会被读取,只能打开读取并再次关闭。 –