2015-04-22 119 views
1

我想写一个用户将在批处理文件中创建的日志,作为一个小型的小游戏,但我似乎无法得到正确的文件目录。我想写这个目录:如何更改批处理文件输出文本的目录?

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对我没有太大的帮助。

感谢您真正的人接触,讲地道的英语

回答

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

如果该目录结构已经存在,这是很简单的:

@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" 
+0

没有必要单独创建每个目录:“如果命令扩展已启用...如果需要,MKDIR会在路径中创建任何中间目录”。 – Aacini

1

尽管您的描述很充足,但缺少一些重要的观点。很显然,你知道“如何更改批处理文件将输出文本的目录”,因为你使用了>> \subfolder\...表示法,所以这是而不是你的问题。我只能猜测你想知道“如何获取批处理文件所在的目录”,所以你可以写一个日志文件放在以下的两个级别即目录下。如果这是您的问题,那么您可以使用代表批处理文件路径的表示法;那就是:

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

。注意,通过%~P0返回的值在一个反斜杠结尾,所以必须%~P0通过附加反斜杠从subfolder1分开;还要注意引号必须包含整个文件的路径整个

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

相关问题