比方說,我有一個文本文件,它包含批處理命令。我如何將該文本文件作爲一個批處理文件運行,而不是將其重命名。我也想保留一個可移植的方面,所以沒有註冊表鍵等。將非蝙蝠擴展名文件作爲批處理文件運行
沒有重命名的原因太過於阻止了在意外關閉時遺留的未命名文件。
比方說,我有一個文本文件,它包含批處理命令。我如何將該文本文件作爲一個批處理文件運行,而不是將其重命名。我也想保留一個可移植的方面,所以沒有註冊表鍵等。將非蝙蝠擴展名文件作爲批處理文件運行
沒有重命名的原因太過於阻止了在意外關閉時遺留的未命名文件。
type some.txt>temp.bat
call temp.bat
del /q /f temp.bat
正在創建一個臨時文件欺騙它沒有提到作爲question.Though限制,你可以鬆%ERRORLEVEL%
因爲del命令的,但你可以把它放在臨時變量:
type some.txt>temp.bat
call temp.bat
set temp_el=%errorlevel%
del /q /f temp.bat
exit /b %temp_el%
我很確定你不能做你想做的。 Windows不會讓您將操作系統配置爲將任何其他擴展程序識別爲批處理文件。僅支持.bat
和.cmd
。
您可以使用FOR/F循環在文本文件中處理一系列簡單的命令,但這會非常嚴格。例如,它將不支持IF
,FOR
,GOTO Label
或CALL :Label
。可能還有其他限制。在你的主批處理文件,你可以有以下幾點:
for /f delims^=^ eol^= %%A in (script.txt) do %%A
您可能能夠支持IF
和/或FOR
如果你通過一個新的CMD.EXE外殼程序執行命令,但你不能保值,可能由命令設置的變量。
for /f delims^=^ eol^= %%A in (script.txt) do cmd /c "%%A"
看到Windows shell命令
assoc
。將文件擴展名(例如* .txt)與文件類型關聯。ftype
。讓您創建一個新的文件類型,告訴Windows Shell如何打開特定類型的文件。從命令提示符鍵入assoc /?
或ftype /?
將幫助您。或者用你的google-fu找到MS文檔。
*.bat
被映射到文件類型batfile
; *.cmd
映射到文件類型cmdfile
。在Windows 7中,它們是相同的。如果您希望能夠運行一個名爲*.foobar
作爲一個批處理文件的文件,只需鍵入:
assoc .foobar=cmdfile
然後,假設一個名爲「sillyness.foobar現有的路徑上的文件,你只需只需鍵入
c:\> sillyness
它會發現sillyness.foobar
並將其作爲批處理文件執行。當Windows文件具有相同名稱和不同擴展名的文件時,Windows shell優先解決衝突問題(.com vs .cmd vs .bat等))
喜歡的東西
assoc .pl=perlscript
ftype perlscript=perl.exe %1 %*
將設置你好像他們是.bat文件運行Perl腳本。
它只是衍生出一個新的cmd實例。 –
如果你的批處理命令是簡單的連續命令,那麼你可以在命令提示符下使用它。將%
標誌加倍以用於批處理文件。
for /f "delims=" %a in (file.txt) do %a
最簡單的方法是這樣的:
cmd < file.txt
正如在以前的答案,有不會在這個文件裏,比如GOTO
,SETLOCAL
和其他幾個命令。但是,多行嵌套if
和for
命令做工作只要可替換參數使用只有百分之一(如在命令行中)。
儘管此方法在屏幕上顯示已執行的命令(@echo off
在此不起作用),但您可以將輸出重定向到NUL,並在「批處理」文件中將所需輸出重定向到CON。例如,這是test.txt的:
@echo off
echo Hello World! > CON
(for /L %a in (1,1,10) do (
echo Turn: %a
if %a equ 4 echo TURN NUMBER FOUR!
)) > CON
輸出例如:
C:\> cmd <test.txt> NUL
Hello World!
Turn: 1
Turn: 2
Turn: 3
Turn: 4
TURN NUMBER FOUR!
Turn: 5
Turn: 6
Turn: 7
Turn: 8
Turn: 9
Turn: 10
進一步的細節在這裏:http://stackoverflow.com/questions/13320578/how-to-run-batch-script-with-out-using-bat-extention/13337597#13337597 – Aacini
,因爲它不能做到,有沒有那麼重命名的更有效的方法?即溫度還是這樣? –
'set'可以通過將所有內容放在一個變量中,並用'&'分隔命令來「保存」。但由於長度限制可變,大文件將無法工作。括號可能會導致問題。 – npocmaka
我總是重新命名它,稱它爲重新命名。我用Ren做了。例如'ren C:\ users \ Jared \ runMe.txt runMe.bat' –