2014-01-20 24 views
2

比方說,我有一個文本文件,它包含批處理命令。我如何將該文本文件作爲一個批處理文件運行,而不是將其重命名。我也想保留一個可移植的方面,所以沒有註冊表鍵等。將非蝙蝠擴展名文件作爲批處理文件運行

沒有重命名的原因太過於阻止了在意外關閉時遺留的未命名文件。

回答

3
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% 
3

我很確定你不能做你想做的。 Windows不會讓您將操作系統配置爲將任何其他擴展程序識別爲批處理文件。僅支持.bat.cmd

您可以使用FOR/F循環在文本文件中處理一系列簡單的命令,但這會非常嚴格。例如,它將不支持IF,FOR,GOTO LabelCALL :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" 
+0

,因爲它不能做到,有沒有那麼重命名的更有效的方法?即溫度還是這樣? –

+0

'set'可以通過將所有內容放在一個變量中,並用'&'分隔命令來「保存」。但由於長度限制可變,大文件將無法工作。括號可能會導致問題。 – npocmaka

+0

我總是重新命名它,稱它爲重新命名。我用Ren做了。例如'ren C:\ users \ Jared \ runMe.txt runMe.bat' –

1

看到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腳本。

+0

它只是衍生出一個新的cmd實例。 –

0

如果你的批處理命令是簡單的連續命令,那麼你可以在命令提示符下使用它。將%標誌加倍以用於批處理文件。

for /f "delims=" %a in (file.txt) do %a 
3

最簡單的方法是這樣的:

cmd < file.txt 

正如在以前的答案,有不會在這個文件裏,比如GOTOSETLOCAL和其他幾個命令。但是,多行嵌套iffor命令工作只要可替換參數使用只有百分之一(如在命令行中)。

儘管此方法在屏幕上顯示已執行的命令(@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 
+0

進一步的細節在這裏:http://stackoverflow.com/questions/13320578/how-to-run-batch-script-with-out-using-bat-extention/13337597#13337597 – Aacini