繁体   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