Windows cmd命令转到批处理文件打开位置的子目录

Windows cmd命令转到批处理文件打开位置的子目录,windows,batch-file,cmd,Windows,Batch File,Cmd,所以这个标题让人困惑。让我告诉你我的需要: 我想打开一个批处理文件,该文件位于c:\documents\test\ 在这个批处理文件中,我想收集c:\documents\test\data中的名称,并将其转换为文本文件 现在简单的方法是: CD c:\documents\test\data dir/b/o:n > names.txt 但我的问题是,我想移动文件夹“\test”,并始终能够调用“\data”文件中的名称 因此,这是我真正需要的: CD [variable that says

所以这个标题让人困惑。让我告诉你我的需要: 我想打开一个批处理文件,该文件位于
c:\documents\test\

在这个批处理文件中,我想收集c:\documents\test\data中的名称,并将其转换为文本文件

现在简单的方法是:

CD c:\documents\test\data
dir/b/o:n > names.txt
但我的问题是,我想移动文件夹“\test”,并始终能够调用“\data”文件中的名称

因此,这是我真正需要的:

CD [variable that says current location] + "\data"

但是我不知道怎么做。请解释您的答案,谢谢。

。字符表示当前工作目录。。。做

cd .\data
你需要什么

编辑:

所以我看没有人真正回答你的问题。根据当前编辑,您可能希望定义一个windows环境变量,该变量保存数据文件夹所在位置的路径,并且在移动文件夹时,该过程的一部分需要更新环境变量,以便批处理脚本能够适当地找到它

因此,如果将数据文件夹移动到C:\archive\test\data,则需要一些进程来调用命令行

SET BATCH_ARCHIVE_PATH="C:\archive\test"
然后在批处理脚本中执行以下操作:

CD "%BATCH_ARCHIVE_PATH%\data"
dir/b/o:n > names.txt

%~dp0
是批处理文件的位置(请运行
获取/?
了解详细信息)

您是说,无论将文件移动到何处,都希望能够知道文件的位置吗?是的,但请参见下文,我的问题是,当我从vba打开批处理时,它会在与保存位置不同的目录中打开它。确定,显然这不是问题所在。我的问题是,当我在vba中打开批处理文件时,命令提示符会打开,例如c:\windows,因此批处理命令无法工作。但是,当我转到批处理文件本身并双击它时,它会工作。这是因为当我打开此批处理文件时,命令窗口默认为批处理文件的保存位置。在VBA中打开批处理文件时,我该如何解决这个问题?@Jason有一段时间了,但刚刚看到您的编辑,我用一个可能的解决方案更新了我的答案