在文件夹中的特定文件类型中按字符串替换路径的一部分

时间:2015-06-13 04:17:39

标签: windows batch-file cmd

U:\mtproject\obj\文件夹和包含*.def个文件的子文件夹中。我需要获取这些文件路径并在命令提示符下打印。 但在打印之前,我需要将U:\mtproject\obj\部分替换为E:\backupDir\DefBackup\

这是我尝试过的和

set objdir=U:\mtproject\obj\
set backupdir=E:\backupDir\DefBackup\

for /r %objdir% %%f in (*.def) do (     
        set new_def_path =  %backupdir%!%%f:%objdir%=!
        echo %new_def_path%     
)

它只显示此输出。我觉得字符串替换的语法有些问题。知道什么是错的吗?

ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.
ECHO is off.

1 个答案:

答案 0 :(得分:0)

a)使用延迟扩展(如SomethingDark已经提到的)

b)删除let $db := doc('t.xq'), $q := $db//*[.//title and .//author][not(.//*[.//title and .//author])] return $q 命令的空格,或者空格将成为变量名或值的一部分。

[.//title and .//author]

delayed expansion trap

的简短演示

(有趣的是:你已经使用了延迟扩展。只需这样做)