可以在批处理文件中使用长路径变量来调用带有这些变量作为命令行参数的EXE吗?如何?
我读到我们可以在批处理文件中设置各种变量。
而且,其中一些论点确实是漫长的道路。
它们可以用作值作为参数传递给在该批处理文件中被调用/调用的EXE吗?
我了解并已在PowerShell脚本中看到了此示例。可以对批处理文件及其变量执行类似的操作吗?
试图使SET命令和路径变量正常工作时遇到了问题。
是的,它是编写.BAT批处理文件的可能且更好的方法,以方便阅读以及更改值和参数。
发生了2个主要缺陷并得到解决。
A)SET命令中的空格引起了问题
等号必须紧随变量名之后。SET MYVAR =“ List.txt”
从上面由Frank Thomas链接的SET文章中,
“变量名或字符串周围的任何多余空格都不会被忽略,SET不会像许多其他脚本语言一样宽容额外的空格。” 因此,如果您输入ln --list%MYVAR%(在'R'之后的空格),则您的命令可能会起作用,因为尾随空格已成为变量名称的一部分
B)长途旅行中的“行情”需要我在其他地方找到的解决方案。
要走很长的路需要此链接的见解的一部分,因此需要从此处获取部分答案信息:https : //stackoverflow.com/a/55951234/1937901
如果需要用引号连接路径,则可以使用=替换变量中的引号。这不需要您知道路径是否已经包含引号。如果没有引号,则什么都不会改变。
@echo off
rem Paths to combine
set DIRECTORY="C:\Directory with spaces"
set FILENAME="sub directory\filename.txt"
echo %DIRECTORY%
echo %FILENAME%
rem This is just to illustrate how the = operator works
set DIR_WITHOUT_SPACES=%DIRECTORY:"=%
echo %DIR_WITHOUT_SPACES%
rem Combine two paths
set COMBINED="%DIRECTORY:"=%\%FILENAME:"=%"
echo %COMBINED%
在上面的示例中,利用SET来创建和连接Path字符串,然后将其作为命令行参数推送到ln.exe。
SET FolA1 =“ ..文件夹子路径1 ..” SET FolA2 =“ ..文件夹子路径1 ..” SET SrcRoot =“ C:\ Users \ UserName \ AppData \ Roaming \ ApplicationName \ Backups” SET DstRoot =“ S :\ HL_TEST \ LN“ SET DstCountFol =” 003--includedir--cp-bk“ SET DstLog =%DstCountFol:” =%_ Log.txt SET DstPlus =%DstRoot:“ =%\%DstCountFol:” =% SET SrcA1 =%SrcRoot:“ =%\%FolA1:” =% SET SrcA2 =%SrcRoot:“ =%\%FolA2:” =% SET DstA1 =%DstRoot:“ =%\%DstCountFol:” =%\%FolA1: “ =% SET DstA2 =%DstRoot:” =%\%DstCountFol:“ =%\%FolA2:”=% ECHO%SrcA1% ECHO%SrcA2% ECHO%DstA1% ECHO%DstA2% ECHO ON ln --progress --json --output%DstLog%--source%SrcA2%--destination%DstA2%--backup-复制%SrcA1%%DstA1%
这是批处理文件中LN.exe的最终命令行,该文件以“较长路径变量”作为参数进行调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句