Batch file 调用批处理文件以在被调用的目录中运行
我需要从父目录调用另一个目录中的批处理文件 但是被调用的批处理文件需要在被调用的目录而不是父目录中运行 范例 C:\Batch\DeleteAll.batBatch file 调用批处理文件以在被调用的目录中运行,batch-file,Batch File,我需要从父目录调用另一个目录中的批处理文件 但是被调用的批处理文件需要在被调用的目录而不是父目录中运行 范例 C:\Batch\DeleteAll.bat del "%~dp0\*.txt" DeleteAll.bat调用另一个目录中的另一个DeleteAll.bat C:\Batch\1\DeleteAll.bat del "%~dp0\*.txt" 然后它应该删除C:\Batch\1中的所有文件\ 我该怎么做 我尝试过,但它在父目录中运行C:\Batch\1\DeleteAll.bat,
del "%~dp0\*.txt"
DeleteAll.bat调用另一个目录中的另一个DeleteAll.bat
C:\Batch\1\DeleteAll.bat
del "%~dp0\*.txt"
然后它应该删除C:\Batch\1中的所有文件\
我该怎么做
我尝试过,但它在父目录中运行C:\Batch\1\DeleteAll.bat,而不是在子目录中运行
call "directory 1\DeleteAll.bat"
===
好的,我设法解决了文件夹名中的空间问题 问题是我没有在子批处理文件中添加引号 为了解决这个问题,我需要在命令中添加引号 DEL“%~dp0*.txt” 如果你还在读这个。。
谢谢你,你的解决方案很有效。作为一个真实的例子 如果父目录中有以下批处理文件
call "directory 1\DeleteAll.bat"
然后在子目录“directory 1”(子目录)中有另一个名为DeleteAll.bat的批处理文件
del "%~dp0\*.txt"
父批处理文件调用子批处理文件,该文件删除子目录(“目录1”)中的所有.txt文件。请记住,您不想尝试删除批处理文件本身(我假定),因此需要指定要在子批处理文件中删除的掩码
基于服务器故障答案的信息
注意:
如果没有文件与指定的掩码(例如.txt)匹配,则获取“找不到”消息是正常的。批处理文件将继续运行,如果这些文件可能存在或不存在,您可以忽略此消息。如果愿意,可以抑制该消息,如中所示
子批处理文件的替代语法 如果要删除很多掩码和/或希望简化删除语法,可以在子批处理文件中使用以下语法。根据
在该示例中,
pushd
用于保存当前目录(最初运行父批处理文件的位置)cd
用于切换到包含子批处理文件的目录,然后作为一个真实示例,popd
还原保存的目录
call "directory 1\DeleteAll.bat"
如果父目录中有以下批处理文件
call "directory 1\DeleteAll.bat"
然后在子目录“directory 1”(子目录)中有另一个名为DeleteAll.bat的批处理文件
del "%~dp0\*.txt"
父批处理文件调用子批处理文件,该文件删除子目录(“目录1”)中的所有.txt文件。请记住,您不想尝试删除批处理文件本身(我假定),因此需要指定要在子批处理文件中删除的掩码
基于服务器故障答案的信息
注意:
如果没有文件与指定的掩码(例如.txt)匹配,则获取“找不到”消息是正常的。批处理文件将继续运行,如果这些文件可能存在或不存在,您可以忽略此消息。如果愿意,可以抑制该消息,如中所示
子批处理文件的替代语法 如果要删除很多掩码和/或希望简化删除语法,可以在子批处理文件中使用以下语法。根据
在该示例中,
pushd
用于保存当前目录(最初运行父批处理文件的位置)cd
用于切换到包含子批处理文件的目录,然后popd
恢复保存的目录请参阅。答案还链接到更多信息。我不认为链接解决了我的问题。。我不需要获取目录,我只需要它在被调用的目录中运行命令。你能提供一些真实的例子吗。答案还链接到更多信息。我不认为链接解决了我的问题。。我不需要获取目录,我只需要它在被调用的目录中运行命令。你能提供一些真实的例子吗?我只是在你的例子中测试它,但我不能让它在我自己的目录中运行。我想因为我的父目录中有一个空格。e、 g.C:\Batch File\Error系统找不到指定的路径。您只需引用您的路径即可。我更新了我的答案以进行反思。TessellatingHeckler发布的链接有可能成为一种更干净的方式,但我现在不知道该如何应用它。我已经引用了我的路径(在你修复它之前),但它给出了相同的错误。M:\Batch File>DEL M:\Batch File\1\*.mpg系统找不到指定的路径。。。*.mpg前有一个双反斜杠。但是stackoverflow删除了它。顺便说一句,我正在尝试删除视频文件。该目录中是否确实存在.mpg文件?(M:\Batch File\1)好的,我用文件夹名中的空格解决了这个问题。问题是我没有在子批处理文件中添加引号。要解决此问题,如果您仍在阅读,我需要在命令DEL“%~dp0*.txt”中添加引号。。谢谢Tone,你的解决方案是有效的。我只是在你的示例中测试了它,但我无法让它在我自己的目录中运行。我想因为我的父目录中有一个空格。e、 g.C:\Batch File\Error系统找不到指定的路径。您只需引用您的路径即可。我更新了我的答案以进行反思。TessellatingHeckler发布的链接有可能成为一种更干净的方式,但我现在不知道该如何应用它。我已经引用了我的路径(在你修复它之前),但它给出了相同的错误。M:\Batch File>DEL M:\Batch File\1\*.mpg系统找不到指定的路径。。。*.mpg前有一个双反斜杠。但是stackoverflow删除了它。顺便说一句,我正在尝试删除视频文件。该目录中是否确实存在.mpg文件?(M:\Batch File\1)好的,我用文件夹名中的空格解决了这个问题。问题是我没有在子批处理文件中添加引号。为了解决这个问题,我
call "directory 1\DeleteAll.bat"