如何从预制的批处理文件创建可运行且有效的批处理文件?

如何从预制的批处理文件创建可运行且有效的批处理文件?

因此,我尝试从预制的批处理文件创建批处理文件,但我不知道如何在不破坏文件的情况下转到文件中的下一行,它只是说明我希望命令执行的操作。这是我目前所拥有的。

@echo off

:batch
cd C:\
cd Users
cd User1
cd Desktop
cd test10
type nul > test10.bat
echo Ipconfig /all

之后,Ipconfig /all它会像平常一样运行命令,但如果我尝试这样做

@echo off

:batch
cd C:\
cd Users
cd User1
cd Desktop
cd test10
type nul > test10.bat
echo Ipconfig /all > test10.bat
echo PAUSE > test10.bat

如果我这样做,它只会说“暂停”

这是我用来制作第二个批处理文件的当前代码

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

那么有人可以帮我解决这个问题吗?

答案1

你应该>>使用>

当使用>写入文件时,您将覆盖文件的所有内容。

当使用时>>,您将把数据附加到现有文件。

你的代码看起来应该是这样的:

@echo off

:batch
cd C:\
cd Users
cd User1
cd Desktop
cd test10
type nul > test10.bat
echo Ipconfig /all > test10.bat
echo PAUSE >> test10.bat

答案2

你的cd命令必须包含/D,这意味着,去/D河流......

/D如果在命令中不使用标志cd,cmd.exe(命令行解释器)将不会转到驱动C:器,如果cd没有转到,当 bat 在同一驱动器上运行时,它可能不会错误地运行(C:),但是当你的 bat 在除 之外的驱动器上运行时C:,你的 batTest10.bat将在当前/运行文件夹中创建,而不是在所需/指向的文件夹中。

假设bat运行的文件夹中没有Users\User1\Desktop\test10文件夹,所有cd命令都会报错...

I:\>cd C:\

I:\>cd Users
The system cannot find the path specified.

I:\>cd User1
The system cannot find the path specified.

I:\>cd Desktop
The system cannot find the path specified.

I:\>cd test10
The system cannot find the path specified.

I:\>

您可以使用一种更精确/更简单的方法来做到这一点......

@echo off

:batch
cd /d "C:\Users\User1\Desktop\test10\" && (
echo Ipconfig /all 
echo PAUSE ) >.\test10.bat
  • 您还可以替换:
    cd /d C:\Users\User1\Desktop\test10\ ... >test10.bat
    到:
    > "%USERPROFILE%\Desktop\test10\test10.bat
@echo off

:batch
> "%USERPROFILE%\Desktop\test10\test10.bat" (
    echo\ Ipconfig /all
    echo\ PAUSE 
   )

观察:1但请记住,某些字符可能需要额外的转义才能用于某些命令、重定向器、操作符等......

^| ^| ^| ^& ^&^& ^> ^>^> ^< ^<^< %% ^( ^)

echo timeout 3 >nul
→ echo timeout 3 ^>nul 

echo cd /d "%USERPROFILE%\Desktop\test10\test10.bat" 2>nul || pause
→ echo cd /d "%%USERPROFILE%%\Desktop\test10\test10.bat" 2^>nul ^|^| pause

echo cd /d "%USERPROFILE%\Desktop\test10\test10.bat" 2>nul && ( 
→  echo cd /d "%%USERPROFILE%%\Desktop\test10\test10.bat" 2^>nul ^&^& ^( 

echo Ipconfig /all 2>nul  || echo\ error Ipconfig command... 
→ echo Ipconfig /all 2^>nul ^|^| echo\ error Ipconfig command...

观察:2还有另一种方法可以在运行时生成一个不转义、不扩展变量值、也不使用 echo 的 bat :参见此答案

回显变量但不获取变量的数据

其他资源:

相关内容