我正在尝试编写一个用户将在批处理文件中创建的日志,作为一个小小的游戏,但我似乎无法获得该文件的正确目录。我想写这个目录:
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并不能真正帮助我得多。
感谢真人接触,说真正的英语
答案 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
的额外反斜杠分隔;另请注意,引号必须包含文件的整个路径。
如果这不是您想要的,请仔细描述您的真实问题。无论如何,试着在将来的问题中更清楚。