Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 是否可以通过'创建一个批处理文件来创建另一个批处理文件;副本con';指挥部?_Windows_Batch File_Cmd - Fatal编程技术网

Windows 是否可以通过'创建一个批处理文件来创建另一个批处理文件;副本con';指挥部?

Windows 是否可以通过'创建一个批处理文件来创建另一个批处理文件;副本con';指挥部?,windows,batch-file,cmd,Windows,Batch File,Cmd,嗯。我的问题很好地解释了这一点。是否可以创建一个批处理文件,当执行该批处理文件时,将通过copy con命令创建另一个批处理文件? 比如: @echo off copy con file.bat @echo off echo hallo exit ^Z start file.bat 我在尝试这样做时遇到的唯一问题是,您需要手动在^Z之后按Enter键,而我找不到任何类型的cmd命令来复制它。 有人知道这样的事情是否可能吗?或者一个批处理文件是否有其他方法来重新创建另一个批处理文件或其自身 谢谢

嗯。我的问题很好地解释了这一点。是否可以创建一个批处理文件,当执行该批处理文件时,将通过copy con命令创建另一个批处理文件? 比如:

@echo off
copy con file.bat
@echo off
echo hallo
exit
^Z
start file.bat
我在尝试这样做时遇到的唯一问题是,您需要手动在^Z之后按Enter键,而我找不到任何类型的cmd命令来复制它。 有人知道这样的事情是否可能吗?或者一个批处理文件是否有其他方法来重新创建另一个批处理文件或其自身


谢谢。

可以为
^Z
发出转义码,并使用
copy con
执行此操作,但您为什么要这样做? 只需正常重定向
echo
命令即可。 像这样:

@echo off
echo Generating batch file
echo echo Hello world > hello.bat
echo Now running batch file
echo ----------
call hello.bat
echo ----------
echo Ta-da!

有多种方法可以从另一个批处理文件中创建批处理文件。使用
回显批处理代码的方法要求转义“批处理代码”中可能出现的特殊字符。还有其他方法,从批处理文件本身读取行,然后将这些行输出到创建的文件中;在这种情况下,即使行包含特殊字符,它们也可能具有纯批处理代码

您在示例中使用的方法与功能类似,即:

tr a-z A-Z << END_TEXT
one two three
uno dos tres
END_TEXT

这样做不是更好吗?也许我不知道你的意思,但我认为这可以帮助你:

@echo off
>newbatch.bat (
echo @echo off
echo echo It works!
echo echo Hope it helped you :)
echo pause >nul
)
run newbatch.bat

您还可以使用括号块来分组多个echo语句,使用单个输出重定向,例如,第一行:
(echo@echo off
,第二行:
echo-echo-hello-world)>hello.bat
。如果我想要一个批处理文件,例如打开一些文件,该怎么办,创建另一个批处理文件,将打开的文件复制并粘贴到另一个目录。类似于“@echo off start C:\Users\User1\Desktop\image1.jpg copy con imag1\u copy.bat”@echo off copy C:\Users\User1\Desktop\image1.jpg C:\Users\User2\Desktop^Z start imag1\u copy.bat exit”的内容您是什么意思?copy con将copy命令与控制台的输入一起使用。您没有使用控制台,因此可以将字符串或类型文件回显到生成的批处理文件中。让我们举一个例子来更好地理解。我想要一个批处理文件,用于执行某些命令,创建另一个批处理文件以执行其他命令。我不希望第一批文件执行命令,然后创建第二批文件执行相同的命令。我希望他们执行完全不同的命令,但我希望第二个命令从第一个命令自动出现,而不需要我进行任何手动交互。@iNT我的示例只是一个示例。您不需要执行“echo-echo”,您可以生成所需的任何批处理文件。这里的重要字符是重定向“>”。您可以执行“echo copy a b>thebatch.bat”,它将创建一个以“copy a b”作为内容的批处理文件。然后,您可以使用“>>”附加到它(或按照@eryksun的建议对语句进行分组)您需要的任何其他命令。仅供参考,
CON
设备(Windows 8之前的伪设备)在打开读取时是控制台输入缓冲区,在打开写入时是屏幕缓冲区。这对存储在文件中的文本没有帮助。
@echo off
>newbatch.bat (
echo @echo off
echo echo It works!
echo echo Hope it helped you :)
echo pause >nul
)
run newbatch.bat