2017-02-15 46 views
0

我有一个Windows脚本遍历所有的子文件夹,以查找它找到的每个zip文件,并将它们的绝对路径放在bat文件中。在生成的文件的开头添加字符串

dir /b /s /-p *.zip /o:n | findstr /E .zip >"%CD%"\listFichierZip.bat 

我想现在将每一行改为MOVE函数。

  1. 每个路径
  2. 之前添加MOVE附加的目标文件夹在我遇到一些问题,每个路径

末,尝试FINDSTR功能前添加“MOVE”字符串。我知道如何连接字符串,变量但函数返回,我不知道。

我发现一些线程在StackOverflow上提出这个问题,但不幸的是,所有的都是关于Unix的。

回答

1
@echo off 
    setlocal enableextensions disabledelayedexpansion 

    > "moveFichierZip.bat" (
     for /r %%a in ("*.zip") do echo move "%%~fa" "x:\somewhere" 
    ) 

使用递归for命令来搜索所有.zip文件,并为每一个echomove文本,然后用全路径(%%~fa),并在目标文件夹中的文件。

所有的输出都被重定向到最终的目标文件。

要直接从命令行运行它,使用

>"moveFichierZip.bat" (for /r %a in ("*.zip") do @echo move "%~fa" "x:\somewhere") 
+0

@Gloups请注意,如果你真的想要做的就是移动ZIP文件,你可以跳过创建'moveFilchierZip.bat'文件的步骤,并让批处理文件直接移动文件:'for/r %% a在(“* .zip”)中移动“%%〜fa”“x:\ somewhere”' –

-1

您最好的选择是安装busybox.exe并将所有相关的unix文本工具都放到一个可执行文件中。那么你将能够

find . -name *.zip -print | xargs -i echo MOVE "{}" DestDir > "$CD"/listFichierZip.bat 

这就是它。执行listFichierZip.bat之前进行一些检查...

+0

*我发现了一些线程问StackOverflow上这个问题,但都被有关Unix,很遗憾。* –

+1

你从OP中引用的句子的理解是“我不希望Unix解决方案“。我的理解是“我不知道如何使用Unix解决方案”。因此,我认为向他们展示如何在Windows上使用这些Unix解决方案很有帮助(其他时间也很有用,因为它们很常见,而在这种情况下几乎没有人使用'cmd')。我加了我的答案_exactly_因为我读过你引用的句子。这就是说,我们有所不同,我非常感谢你激励你的失望。我希望每个下议院都这样做,我们所不同的是每个人都更清楚。 – Dario

+0

Donevote **没有**评论'=='**意思是家伙**。然后,当标签是'cmd'时,用户需要这种方式的解决方案,但是**您提供给他/她安装'busybox.exe',这是另一个**问题**,对于他/她。而他/她不能使用** cmd **你认为他/她可以** ** bash ** ?.我很高兴你没有生气:) –

相关问题