从路径中Y:\Server-MODS
所有文件(包括存储在子文件夹中的文件,但不是子文件夹本身,而实际上只有文件本身要通过 xcopy 复制到以下路径C:\Users\User\Documents\My Games\FarmingSimulator2022\mods
。
基本代码如下:
xcopy /s /h /y /d /q "Y:\Server-MODS" "C:\Users\Documents\My Games\FarmingSimulator2022\mods"
复制有效,但不是我上面描述的方式或我希望的方式。
我只想复制所有文件(包括子文件夹中的文件),但不复制文件所在的文件夹,而只是将该文件与其他子文件夹中的其他文件一起复制?
答案1
Set-Location 'C:\Users\User\Documents\My Games\FarmingSimulator2022\mods'
(Get-ChildItem -Path .\*.* -Recurse -File).FullName | Foreach {Copy-Item $_ 'F:\Server-MODS'}
@echo off
cd /d "Y:\Server-MODS" || exit /b
for /f delims^= %%i in ('2^>nul where /r "C:\Users\Documents\My Games\FarmingSimulator2022\mods" *.*')do 1>nul 2>nul copy /y "%%~fi" .
复制有效,但不是我上面描述的方式或我希望的方式。
电源外壳:: 替换
xcopy
为Get-ChildItem .. | Foreach {Copy-Item ..}
循环
/// 编辑 ///
- 关于编辑你的答案以及参考文献的一些建议(其他资源)以获得在使用/创建 bat 脚本时更好地理解的一些良好实践知识:
@echo off && setlocal EnableDelayedExpansion
color 1f && set "_sources=Y:\"
set "_destination=%UserProfile%\Documents\My Games\FarmingSimulator2022\mods"
for /r "%_source%" %%F in (*)do for %%A in ("%%~pF\.")do =;(
echo\Von wo: "%%~nxA"
echo\Welche Datei: "%%~nxF"
xcopy "%%F" "%_destination%" /v /y /d
echo\__________________________________ );=
echo\Ueberpruefe Dateien auf Nicht-Existenz auf der NAS...
for /r "%_destination%" %%F in (*)do set^ "_Found=False" & =;(
for /r "%_source%" %%A in (*)do if "%%~nxF"=="%%~nxA" =;(
set^ "_Found=True" ) else if "!_Found!" == "True" =;(
del /q "%%~fF" && echo\Datei geloescht: "%%~nxF" );=
);=
echo\MODs sind synchron mit der NAS.
echo\__________ && timeout /t 05 | =;(
echo\Druecke eine beliebige Taste, um das Fenster zu
echo\schliessen, ansonsten wird das Fenster innerhalb
echo\der naechsten 5 Sekunden geschlossen.
);= & endlocal
其他资源:
答案2
@echo off
color 1f
set "source=Y:\"
set "destination=C:\Users\User\Documents\My Games\FarmingSimulator2022\mods"
for /r "%source%" %%F in (*) do (
for %%A in ("%%~pF\.") do (
echo Von wo: "%%~nxA"
)
echo Welche Datei: "%%~nxF"
xcopy "%%F" "%destination%" /v /y /d
echo __________
)
echo Ueberpruefe Dateien auf Nicht-Existenz auf der NAS...
for /r "%destination%" %%F in (*) do (
set "fileFound="
for /r "%source%" %%A in (*) do (
if /i "%%~nxF"=="%%~nxA" set "fileFound=true"
)
if not defined fileFound (
del "%%F"
echo Datei geloescht: "%%~nxF"
)
)
echo MODs sind synchron mit der NAS.
echo __________
echo Druecke eine beliebige Taste, um das Fenster zu schliessen, ansonsten wird das Fenster innerhalb der naechsten 5 Sekunden geschlossen.
timeout /t 5 >nul