批处理文件,创建另一个批处理文件

问题描述:

我想做一个批处理文件,这将有助于在启动时映射驱动器 基本上它会写一个批处理文件到它运行的计算机的启动文件夹。批处理文件,创建另一个批处理文件

@Echo Off 
cls 
title Set Network drive 1.0 
color 0A 

rem "rem" is a message that can only bee seeing when editing a batch file. It will not  be includded when running a batch file. 

rem =====saving log file to your desktop========== 


set log="%USERPROFILE%\Desktop\Set Network Drive 1.0.log" 
echo.>>%log% 

echo Starting log at %date% %time%>>%log% 
echo.>>%log% 

rem ==================Detecting OS type=========================== 

echo. 
echo =====================Detection OS type================= 
echo =====================Detection OS type=================>>%log% 
echo. 
echo.>>%log% 
color 0c 
echo One second please....... 
echo. 
for /f "tokens=2 delims=:" %%a in ('systeminfo ^| find "OS Name"') do set OS_Name=%%a 
for /f "tokens=* delims= " %%a in ("%OS_Name%") do set OS_Name=%%a 
for /f "tokens=3 delims= " %%a in ("%OS_Name%") do set OS_Name=%%a 



rem ===========Setting OS type to use as variable %variable%===== 


if "%os_name%"=="XP" set verssion=xp 
if "%os_name%"=="7" set version=7 

if "%version%"=="XP" set desktop=xp 
if "%version%"=="7" set desktop=7 


cls 
color 0A 
echo. 
echo Operating system detected.............. Windows %version% 
echo Operating system detected.............. Windows %version% >>%log% 
echo.>>%log% 

rem ===============Gathering information========================= 
echo ===============Drive information==============>>%log% 
echo. 
echo.>>%log% 
set /p driveletter=Drive letter to assign to: 
echo Drive Letter................................ %driveletter%>>%log% 
echo.>>%log% 
echo. 
set /p IP=Ip address device: 
echo IP address of remote device................. %IP%>>%log% 
echo.>>%log% 
echo. 
set /p path=Path on remote machine: 
echo Path on remote machine set to............... %path% >>%log% 
echo.>>%log% 
echo. 
set /p Username=Username (will be viewable in the log file and batch file): 
echo Username.................................... %username%>>%log% 
echo. 
echo.>>%log% 
set /p pass=Password (will be viewable in the batch file): 
echo Password.................................... **********>>%log% 
echo. >>%log% 
echo ============================================================>>%log% 
echo.>>% 
rem ==================================================================== 

rem ====Writing batch file to startup folder as Map %driveletter%.bat=== 







rem ========windows 7================== 

:win7 
set startup="C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\Map %driveletter%.bat" 
pause 
echo @echo off >>%startup% 
echo title Mapping network drive %driveletter%:>>%startup% 
echo color 0A>>%startup% 
echo cls>>%startup% 
echo echo.>>%startup% 
echo echo Wating for connection to drive location.........>>%startup% 
echo goto loop>>%startup% 
echo.>>%startup% 
echo :loop>>%startup% 
echo.>>%startup% 
echo echo Pinging %ip%.........>>%startup% 
echo cd c:\windows\system32\>>%startup% 

这是我在哪里遇到问题。这个命令不会输出到批处理文件的创建,并关闭该批处理文件

echo ping %ip% -n 1 | find "TTL">>%startup% 




echo if not errorlevel 1 goto up>>%startup% 
echo if errorlevel 1 goto loop>>%startup% 
echo.>>%startup% 
echo.>>%startup% 
echo :up>>%startup% 
echo cls>>%startup% 
echo echo.>>%startup% 
echo echo Device is up>>%startup% 
echo echo.>>%startup% 
echo echo Mapping drive......>>%startup% 
echo c:\windows\system32\net use %driveletter%: \\%ip%\%path% %pass% /USER:%username% >>%startup% 
echo if not errorlevel 1 goto up>>%startup% 
echo if errorlevel 1 goto end>>%startup% 
echo echo.>>%startup% 
echo :end>>%startup% 
echo echo Drive was mapped>>%startup% 
echo echo.>>%startup% 
rem ==========REMOVE THE FOLOWING LINE TO HAVE THE BATCH FILE GO AWAY WHEN COMPLETE====== 
echo pause>>%startup% 


start notepad %log% 

pause 
+0

不知道,也许是一个转义字符问题http://www.robvanderwoude.com/escapechars.php –

+1

'ping%ip%-n 1^|' foxidrive

+0

是的,它做到了。谢谢。 – user3246197

@echo off 
echo @echo off>t.bat 
echo echo test complete>>t.bat 
echo quit>>t.bat 

这基本上是一个会在当前工作目录另一个批处理文件t.bat一批代码。您可以使用cd命令将输出文件(创建的批处理文件)引导至启动文件夹。 >>运算符将文本回显到输出文件的下一行。