如何更改批处理文件将文本输出到的目录?

时间:2015-04-22 19:51:50

标签: batch-file

我正在尝试编写一个用户将在批处理文件中创建的日志,作为一个小小的游戏,但我似乎无法获得该文件的正确目录。我想写这个目录:

BatchfileandFolder\subfolder1\subfolder2\ThedataisHere.txt

这是我的代码(我真的不知道我在做什么)

Echo Write a piece of text here  
set /p UserData=
>>\subfolder1\subfolder2\"ThedataisHere.txt" echo %UserData%

尝试深入了解目录是必不可少的,但我不知道确切的命令,CD的帮助菜单以及cmd.exe promt上的PATH并不能真正帮助我得多。

感谢真人接触,说真正的英语

3 个答案:

答案 0 :(得分:2)

@ECHO OFF
SETLOCAL
SET "logfile=u:\sub folder1\sub folder2\ThedataisHere.txt"
FOR /f "delims=" %%a IN ("%logfile%") DO MD "%%~dpa"
Echo Write a piece of text here  
set /p UserData=
>>"%logfile%" echo %UserData%

GOTO :EOF

此方法使用变量logfile,因此您不必永远输入名称(如果您想更改名称或目录,请避免痛苦,并且该方法允许您使用多个日志文件如果你愿意,很容易)

我故意使用spaces in directory names来证明这种方法。在设置日志文件名后立即创建目录

  • 2>nul附加到md指令行以取消directory already exists消息

从那里,只需使用>>"%logfile%"来创建日志。如果文件名不包含空格之类的分隔符,则不需要引号。

请注意,如果指定目录的第一个字符是\,则该目录相对于根目录,但如果不是,则该目录相对于目标驱动器上的当前目录。 u:是驱动器说明符,而不是目录名;我使用u:作为我的试驾。您的选择取决于您。

答案 1 :(得分:1)

如果目录结构已经存在,那很简单:

@echo off
set /p UserData=Write some text here: 
@echo %UserData% >> "subfolder1\subfolder2\TheDataIsHere.txt"

如果它不存在,则必须先创建它(在Win7 64位上测试):

@echo off
if not exist "subfolder1" md "subfolder1"
if not exist "subfolder1\subfolder2" md "subfolder1\subfolder2"
set /p UserData=Write some text here: 
@echo %UserData% >> "subfolder1\subfolder2\TheDataIsHere.txt"

答案 2 :(得分:1)

尽管您的描述充足,但缺少一些重要的观点。很明显,您知道“如何更改批处理文件将文本输出到的目录”,因为您使用>> \subfolder\...表示法,因此您的问题。我只能猜到你想知道“如何获取批处理文件所在的目录”,这样你就可以写入位于 目录下两层的日志文件。如果这是您的问题,那么您可以使用代表批处理文件路径的%~P0表示法;那就是:

>> "%~P0subfolder1\subfolder2\ThedataisHere.txt" echo %UserData%

请注意,%~P0返回的值以反斜杠结尾,因此%~P0必须 subfolder1的额外反斜杠分隔;另请注意,引号必须包含文件的整个路径。

如果这不是您想要的,请仔细描述您的真实问题。无论如何,试着在将来的问题中更清楚。