如何使用调用正确传递带空格的文件作为参数

时间:2017-09-20 11:57:53

标签: batch-file cmd

我编写了一个小脚本来读取给定目录中的所有文件,并检查是否出现了字符串 这似乎有效,直到我在被调用的.bat中调用public static function getUnmappedUsersList() { $query = self::find() ->select(['id', "CONCAT(name, ' ', surname, ' (', email, ')') as name"]); return [Yii::t('app', 'ADMIN_PANEL_MIGRATE_UNASSIGNED_CLIENTS')] + ArrayHelper::map($query->asArray()->all(), 'id', 'name'); } 我面临的问题是,当我使用call函数时,执行的新.bat文件没有给出参数的全名。

脚本

%1

正如您所看到的,脚本会检查NET USE O: "\\MyNetworkDrive\MySelectedFolder" IF NOT "%~1"=="" GOTO ADDV SET VAR= FOR /F "tokens=* USEBACKQ" %%F IN (`DIR *.* /s/b/A:-d-h`) DO FIND /i "stringToFind" "%%F" && CALL %0 %%F SET VAR GOTO END :ADDV SET VAR=%VAR%!%1 :END ECHO %VAR% > search.txt pause 是否等于空字符串 现在在for do循环中,我检查文件中的字符串,如果文件有一个,则调用相同的脚本,文件路径为参数(正确的文件路径,例如%1
但是,当我在被叫.bat中调用O:\MyNetworkDrive\MySelectedFolder\My File.xls时,它等于%1

是什么导致O:\MyNetworkDrive\MySelectedFolder\My变量不包含正确的文件路径?
我怎么解决这个问题呢? 我在互联网上可以找到关于这个的所有内容是用双引号引用路径并使用%1来否定变量中的引号,据我所知,我已经正确使用了它。

0 个答案:

没有答案