2010-01-12 151 views
2

我想使用批处理文件(*.bat)在文件夹%tv%中创建一个名为“new text document.txt”的文件。这是我的批处理文件:在批处理文件(* .bat)中创建文件命令

set tv=D:\prog\arpack96\ARPACK\SRC 
cd "%tv%" 
@CON >> "new text document.txt" 
set tv= 

虽然我真的可以在文件中创建%tv%,但是当我运行上面的批处理文件,我会得到一个错误信息说

“”无法识别作为内部 或外部命令,可操作程序 或批处理文件。

有无论如何摆脱这个错误信息?或者我使用错误的命令创建文件?

回答

6

为了得到真正的空文件,而无需提供用户保存文本相互作用,可以使用set /p命令用少许诡计:

set tv=c:\documents and settings\administrator 
cd "%tv%" 
<nul >"new text document.txt" (set /p tv=) 

set /p请求输入到tv变量用户后输出该提示后字符。

由于提示符为空,因此不会显示提示。既然你从nul读取,它不会等待用户交互。并且您可以将空字符串直接存储到tv,因此不需要取消设置。


其实,经过一番思考,还有一种更简单的方法。我过去使用过set /p技巧,因为它是我知道不添加换行符的回显文本的唯一方式(对控制台中的进度条非常有用)。但是,如果你想要的是一个空文件,你也许可以蒙混过关:

copy /y nul "new text document.txt" 

copy只是拷贝nul设备(有效的空文件)的内容,以新的文件名。 /y是为了确保它被覆盖而不会打扰用户。

+0

这是正确的答案。 – Graviton 2010-01-12 03:46:37

+0

好吧,它是* a *正确的答案,它可能不是唯一的答案:-) – paxdiablo 2010-01-12 03:48:53

+0

我通常使用'type nul>'或'copy nul'。但是我在这里稍后了解了这个'set/p'技巧:)。 – Joey 2010-01-12 06:47:33

3
type nul > file.txt 

file.txt的应创建空

paxdiablo's answer

+0

不,它不工作。 – Graviton 2010-01-12 03:43:45

+0

我不想用户交互;我只想静静地创建一个空文件。 – Graviton 2010-01-12 03:51:57

+0

类型nul应该这样做 – jspcal 2010-01-12 03:55:33

0

con是Windows的专门文件名,它不应该被使用。

副本骗子>> FILENAME.TXT

应要求你输入文字,并可以按Ctrl Z.

+0

我不想被要求输入文本;我想要在指定位置以无声方式创建文件 – Graviton 2010-01-12 03:44:20

4

从* .bat文件创建一个空文件 - 这对我很有用。

echo off > test.txt