簡體   English   中英

Windows 上的簡單“SendTo”腳本

[英]Simple "SendTo" script on Windows

我想創建一個簡單的腳本,其中包含:

"C:\Users\Professional\NVEncC_5.24_x64\NVEncC64.exe" --codec h265 --preset quality --profile main10 --tier high -i "Project.mkv" -o "Project-Q27.mkv"

我可以通過右鍵單擊 => SendTo 到達。

我知道我需要將文件命名為 XXX.bat 並將其粘貼到 SendTo 文件夾中。

但我不知道如何獲取文件名以將其動態添加到腳本而不是“Project.mkv”。

你能幫助我嗎?

謝謝 !

K。

具有以下內容的 A.bat 文件應該可以工作。

"C:\Users\Professional\NVEncC_5.24_x64\NVEncC64.exe" --codec h265 --preset quality --profile main10 --tier high -i "%~f1" -o "%~n1-Q27.mkv"

pause

我還添加了暫停,這樣你就可以看到如果它很快會發生什么,但它可以被刪除。

%~f1是您右鍵單擊並在其上使用“SendTo”的文件的參數(擴展為完整路徑)。 %~n1-Q27.mkv"本質上與參數%~f1相同,但沒有文件擴展名,它將-Q27.mkv添加到文件名中。

因此,如果您在名為Funny.mkv的文件上右鍵單擊/SendTo/yourbat.bat,命令 (NVEncC64.exe) 將在該文件上運行,output 將運行到名為Funny-Q27.mkv的文件中。

我建議您在測試之前備份文件,以免錯誤地覆蓋任何現有文件。

要獲取正在運行的 PowerShell .ps1腳本的名稱,您可以使用來自MyInvocation的以下命令:

$MyInvocation.MyCommand這將返回.ps1文件 object。

要僅獲取您可以運行的名稱字符串: $MyInvocation.MyCommand.Name

雖然@notjustme 提供的答案有效,但我還有一個小補充:output 變量應包括傳遞給批處理文件的文件名的驅動器和路徑,以便在與源文件相同的目錄中創建 output 文件文件。

"C:\Users\Professional\NVEncC_5.24_x64\NVEncC64.exe" --codec h265 --preset quality --profile main10 --tier high -i "%~f1" -o "%~d1%~p1%~n1-Q27.mkv"

pause

右鍵單擊 --> SendTo --> your_batch_file.cmd 時傳遞的文件名被引用為%1或第一個參數。 因為它是一個文件名,所以可以對其進行解析和擴展。 正如@notjustme 所提到的:

  • %~f1將 %1(傳遞的文件名)擴展為其完全限定的路徑名
  • %~n1僅將 %1 擴展為其文件名但還有:
  • %~d1將 %1 擴展為其驅動器號
  • %~p1將 %1 擴展到其完整路徑
  • %~x1僅將 %1 擴展為其文件擴展名

如果不將%~d1%~p1添加到 output 文件變量中,默認情況下不會在與源文件相同的目錄下創建轉碼文件 相反,它將在批處理文件所在的目錄中創建。

(此外,鑒於 rigaya 相當短的開發 windows 與 NVEncC,您可能希望將其安裝到不包含版本控制的更通用命名的目錄,例如, "C:\Users\Professional\NVEncC\"而不是"C:\Users\Professional\NVEncC_5.24_x64\" 。這樣,您不必在每個新版本的批處理文件中更新其路徑。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM