Batch file DOS文件名上的括号

Batch file DOS文件名上的括号,batch-file,character,dos,Batch File,Character,Dos,我正在编写一个脚本,将旧文件复制到另一个文件夹中 我的剧本就是基于这个 在我检查名为 search_results_2014-04-16_142612(keywordsbroad-exact).xls 代码第31行似乎有错误: ) ELSE (for /f %%a in ('"dir %attr% /-c "%file%"|findstr "^^[0-9]""') do call:jdate JD "%%a") 我相信“(”和“)”是导致问题的原因。我尝试在语句中添加^(和%%)(但一直收

我正在编写一个脚本,将旧文件复制到另一个文件夹中

我的剧本就是基于这个

在我检查名为

search_results_2014-04-16_142612(keywordsbroad-exact).xls
代码第31行似乎有错误:

) ELSE (for /f %%a in ('"dir %attr% /-c "%file%"|findstr "^^[0-9]""') do call:jdate JD "%%a")
我相信“(”和“)”是导致问题的原因。我尝试在语句中添加^(和%%)(但一直收到错误消息

此时错误消息为.xls“|findstr”^[0-9]”,这是意外的


有什么建议吗?

外部双引号是问题的根源。它们的存在是为了让您不必逃避
|
,但它们给您的
%file%
带来了问题,因为它没有正确引用,使
暴露在外,从而过早地关闭了IN()修复方法是删除外部引号并转义管道。此外,插入符号现在将被正确引用,因此无需转义:

) ELSE (for /f %%a in ('dir %attr% /-c "%file%"^|findstr "^[0-9]"') do call :jdate JD "%%a")