我在不同位置有大量图像,这些图像都位于名为“global_en-us”的文件夹中(指的是在EN网站上使用的图像)。这些都需要复制到各种其他语言(例如global_de-de),因为只提供了EN - 因为图像上的任何内容都不是特定于语言的。显然,最好的解决方案是重写站点上的路径以删除对语言的引用,但每个集合有3-4种语言,大约在100到120个集合之间,这个任务太大了,所以要复制一个bat脚本根据需要,所有这些都会更方便。
图像都设置与此类似。来自“/ assets / images”的路径是重要的一点,我想从那里运行脚本并让它顺利运行
c:/somefolder/assets/images/special-offers/some-promo-name/global_en-us/<images>
c:/somefolder/assets/images/layout/some-component-name/global_en-us/<images>
c:/somefolder/assets/images/tournaments/some-tourney-name/global_en-us/<images>
我目前有一个脚本,我拼凑起来,只知道bat脚本真正有效,你可以指定一个包含global_en-us文件夹的位置,它会将它复制到所有必需的语言。我在下面复制了它:
@echo off
IF EXIST log.txt (
del log.txt
)
set /p folder="Enter location : "
set folderTest=%folder:~-1%
echo %folderTest% > log.txt
if %folderTest% == \ echo "slash found" > log.txt
if NOT %folderTest% == \ set folder=%folder%\
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_bg-bg\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_pt-br\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_cs-cz\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_da-dk\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_de-de\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_el-gr\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_en-us\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_es-es\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_es-la\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_et-ee\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_fi-fi\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_fr-fr\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_hr-hr\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_hu-hu\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_is-is\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_it-it\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_ja-jp\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_lt-lt\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_lv-lv\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_nl-nl\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_no-no\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_pl-pl\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_pt-pt\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_ro-ro\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_ru-ru\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_sv-se\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_si-si\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_ua-ua\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_zh-cn\"
xcopy /Y /S "%folder%global_en-us\*.*" "%folder%global_zh-tw\"
我想要的是,如果现在变得越来越清晰,而不是我必须在每个文件夹上运行100-120次,例如“c:/ somefolder / assets / images / special-offers / some-promo- name /“,我可以告诉它”c:/ somefolder / assets / images /“并让它以resursivly的方式工作,当它找到”global_en-us“时,它会根据需要执行xcopy,然后返回并继续前进。
答案 0 :(得分:1)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q47017256.txt"
FOR /d /r "%sourcedir%\somefolder\assets\images\" %%a IN (*) DO IF /i "%%~nxa"=="global_en-us" (
FOR /f %%d IN (%filename1%) DO (
ECHO XCOPY /y /d /s "%%a\*" "%%~dpaglobal_%%d\"
)
)
GOTO :EOF
您需要更改sourcedir
的设置以适合您的具体情况。
我使用了一个名为q47017256.txt
的文件,其中包含我的测试虚拟数据。
BG-BG
PT-BR
CS-CZ
所需的XCOPY命令仅用于ECHO
用于测试目的。 在您确认命令正确后,将ECHO XCOPY
更改为XCOPY
以实际复制文件。附加>nul
以取消报告消息(例如1 file copied
)
for /d /r
将%%a
分配给从指定目录开始的每个目录的名称。 if
仅允许进一步处理其叶子上名为global_en-us
的目录。
在循环中,读取我所描述的格式的文件,并生成xcopy
以更新(/d
)目标目录,该目录目录是根据驱动器和路径构建的。 %%a
减去叶子目录global_us-en
+文字global_
+从文本文件中读取的行。
因此,您应该可以随时运行此操作,将整个树更新为最新global_en-us
目录中的副本。