将文件从多个子目录复制到根目录并保留重复项

时间:2013-09-26 22:32:16

标签: php windows batch-file batch-processing directory

所以我有一个包含图像的目录和子目录列表。我需要以相同的格式获取所有这些文件的名称,我需要编辑它们以获取来自不同角度(即背面)的副本或图像。让我们说他们都在

C:\Users\username\Desktop\a........

例如我有一张图片:

C:\Users\username\Desktop\a\123\123.jpg
C:\Users\username\Desktop\a\123\back\123.jpg

我希望他们都在C:\ Users \ username \ Desktop \ a \ 但我想保留背面和正面图像。我发现了几十个脚本会将这些文件移动或“压平”到一个文件夹中,但它总是要求覆盖图像。有没有办法让它保留第二个文件并像正常复制功能一样添加123(1).jpg?或者甚至可以在文件名中插入“back”以进行复制?它也不仅仅停留在\ back我还有\ options文件夹。

那么我可以使用部分路径名来命名文件吗?所以,如果它有\ back,我可以将其添加到文件名字符串中吗?与\ options相同的事情?

所以对于C:\ Users \ username \ Desktop \ a \ 123 \ back \ 123.jpg,我希望:

C:\Users\username\Desktop\a\123.123.jpg
C:\Users\username\Desktop\a\123.back.123.jpg
C:\Users\username\Desktop\a\123.options.image1.jpg
C:\Users\username\Desktop\a\123.options.image2.jpg

我更喜欢使用批处理脚本来执行此操作,但老实说,我将使用PHP,JS,Ruby,以及我无需编译的任何内容。 :)非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

C:\Users\username\Desktop\a文件夹中启动它,它会在运行之前编写renfile.bat供您查看,如果它符合您的需要 - 重命名包含文件夹名称的所有文件。

@echo off
echo.@echo off> renfile.bat
for /f "delims=" %%a in ('dir /b /s /a-d ') do call :next "%%a"
echo renfile.bat created
pause
goto :eof
:next
echo "%~1"
set "var=%~1"
call set "var=%%var:%cd%=%%"
set "var=%var:\=.%"
>>renfile.bat echo ren "%~1" "%var:~1%"

您可以使用此方法将所有文件移动到一个文件夹。

@echo off
for /r "C:\Users\username\Desktop\a" %%a in (*) do move "%%a" "C:\Users\username\Desktop\a"