如何在DOS中指定相对本地文件路径?

时间:2010-06-02 13:26:01

标签: dos

  

可能重复:
  How do I dynamically specify a file in DOS?

我使用c#.NET 2.0执行DOS命令来ftp文件。所有工作除了1件事,在我调用的cmd文件中,它运行一个PUT语句。现在put语句有一个硬编码的本地文件路径。我需要指定一个动态路径。我试过了

put %~dp0\myfile.DTL myfile.dtl

但它说无法找到该文件。

现在,.NET代码调用一个BAT文件,该文件仅用于调用CMD文件。有趣的是,BAT文件在调用CMD文件时成功使用了相对路径:

ftp.exe -s:%~dp0\oit.cmd 

但是,我无法在cmd文件中获得相对的wrok路径:

open <my host> 
<user name> 
<password> 
put <hardcoded path that needs to be relative path>localfilename remotefilename

我会知道它将存在于何处,所以我只需要抓住该文件所在的任何本地直接文件。

2 个答案:

答案 0 :(得分:0)

亲戚是“。” (点)。

你能发布确切的情况吗?你在哪个目录,文件在哪里?

小心“〜”char ...它对DOS文件有特殊含义(8.3表示法)

答案 1 :(得分:-2)

使用System.IO.Directory.GetCurrentDirectory()获取当前(工作)文件夹。

或者,如果您想要相对于.EXE文件的路径,可以使用System.Reflection.Assembly.GetEntryAssembly().CodeBase获取.EXE文件的完整路径,然后使用System.IO.Path.GetDirectoryName()获取该路径的目录名称

之后,您可以使用System.IO.Path.Combine获取相对的绝对路径:

string absPath = Path.Combine( @"c:\working\folder", @"sub\folder\file.ext" );
// absPath == "c:\working\folder\sub\folder\file.ext

// Works with double-dot too:
string absPath2 = Path.Combine( @"c:\working\folder", @"..\up\file.ext" );
// absPath == "c:\working\up\file.ext
相关问题