0

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

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 我还有 \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 以及任何我不必编译的东西。:) 非常感谢提供的任何帮助。

4

1 回答 1

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"
于 2013-09-27T08:00:27.003 回答