[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 14# xiaoyao202

游戏存档路径
C:\Users\Administrator\AppData\Roaming
C:\Users\Administrator\AppData\Local
C:\ProgramData
C:\Users\Administrator\Documents这个可以改D盘

TOP

回复 15# Batcher

Tom Clancy's Ghost Recon Wildlands 就在%ALLUSERSPROFILE%(即C:\ProgramData)下面啊

TOP

回复 14# xiaoyao202


就按照你的思路,先完成第一步,你看看获取到txt文本内容是否正确:
  1. @echo off
  2. cd /d "%~dp0"
  3. set "Folder_1=%userprofile%\AppData\Roaming"
  4. set "Folder_2=%userprofile%\AppData\Local"
  5. set "Folder_3=%allusersprofile%"
  6. set "Folder_4=%userprofile%\Documents"
  7. set "LogFile=D:\1.txt"
  8. type nul >"%LogFile%"
  9. for %%a in ("%Folder_1%","%Folder_2%","%Folder_3%","%Folder_4%") do (
  10.     echo 正在处理文件夹 %%a
  11.     for /f "delims=" %%b in ('dir /b /s /a-d "%%a\*.sav"') do (
  12.         >>"%LogFile%" echo %%b
  13.     )
  14. )
复制代码
然后下一步再继续讨论到底获取哪一级文件夹
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 yakeyun 于 2022-4-20 00:57 编辑

回复 10# xiaoyao202
  1. @echo off&setlocal enabledelayedexpansion
  2. if not exist D:\存档\ (md D:\存档)
  3. if not exist D:\存档\数据\ (md D:\存档\数据)
  4. for /f "delims=" %%a in ('dir /a /s /b "C:\ProgramData\*.sav" ') do (
  5. set savkz1=%%~xa
  6. set sav1=%%~dpa
  7. echo !sav1!
  8. if !savkz1!==.sav (
  9. echo !sav1! >>D:\存档\游戏存档.log
  10. copy /y "!sav1!" "D:\存档\数据\"
  11. )
  12. )
  13. for /f "delims=" %%b in ('dir /a /s /b "C:\Users\Administrator\AppData\Local\*.sav" ') do (
  14. set savkz2=%%~xb
  15. set sav2=%%~dpb
  16. echo !sav2!
  17. if !savkz2!==.sav (
  18. echo !sav2! >>D:\存档\游戏存档.log
  19. copy /y "!sav2!" "D:\存档\数据\"
  20. )
  21. )
  22. echo 游戏存档已经备份完毕,3秒后本窗口将自动关闭!
  23. timeout -t 3 >nul
  24. exit
复制代码

TOP

回复 18# Batcher


19楼已经用if过滤了非.sav的文件项目,但是拷贝会多一些其它扩展名文件。

TOP

本帖最后由 xiaoyao202 于 2022-4-20 02:42 编辑

回复 18# Batcher


    测试了没问题。下一步读取sav文件路径然后截取
也就是需要复制roaming和local后面的文件夹

TOP

回复 20# yakeyun


    谢谢大佬。但是需要的这种不是sav文件。文件夹是存档游戏的名字。sav文件在这些文件夹的子目录里面

TOP

回复 21# xiaoyao202


    请把这个txt文件上传到网盘我试试
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 23# Batcher
https://wwi.lanzoup.com/i5g1J03hiqvg
蓝奏盘

TOP

回复 24# xiaoyao202


把你的1.txt和下面这个test_2.bat放在同一个目录下
test_2.bat 保存为UTF-8编码(为了跟1.txt保持一致):
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. chcp 65001
  3. REM 设置备份到哪个文件夹
  4. set "DstFolder=D:\Test"
  5. cd /d "%~dp0"
  6. setlocal enabledelayedexpansion
  7. for /f "delims=" %%i in ('type "1.txt"') do (
  8.     set "File=%%i"
  9.     if "!File:%userprofile%\AppData\=!" neq "%%i" (
  10.         for /f "tokens=1-6 delims=\" %%a in ("%%i") do (
  11.             if not defined %%a\%%b\%%c\%%d\%%e\%%f (
  12.                 xcopy /e /y "%%a\%%b\%%c\%%d\%%e\%%f" "%DstFolder%\%%f\"
  13.                 set "%%a\%%b\%%c\%%d\%%e\%%f=1"
  14.             )
  15.         )
  16.     ) else if "!File:%allusersprofile%\=!" neq "%%i" (
  17.         for /f "tokens=1-3 delims=\" %%a in ("%%i") do (
  18.             if not defined %%a\%%b\%%c (
  19.                 xcopy /e /y "%%a\%%b\%%c" "%DstFolder%\%%c\"
  20.                 set "%%a\%%b\%%c=1"
  21.             )
  22.         )
  23.     ) else if "!File:%userprofile%\Documents\=!" neq "%%i" (
  24.         for /f "tokens=1-5 delims=\" %%a in ("%%i") do (
  25.             if not defined %%a\%%b\%%c\%%d\%%e (
  26.                 xcopy /e /y "%%a\%%b\%%c\%%d\%%e" "%DstFolder%\%%e\"
  27.                 set "%%a\%%b\%%c\%%d\%%e=1"
  28.             )
  29.         )
  30.     )
  31. )
  32. endlocal
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 xiaoyao202 于 2022-4-20 17:50 编辑

回复 25# Batcher
谢谢大佬。测试没问题。但是2个批处理能合并一起吗。读取完1.txt然后删除。输出游戏存档路径的txt。也就是截取后的路径

TOP

回复 26# xiaoyao202


test_3.bat 另存为UTF-8编码
  1. @echo off
  2. chcp 65001
  3. REM 设置备份到哪个文件夹
  4. set "DstFolder=D:\Test"
  5. REM 设置游戏存档路径
  6. set "Folder_1=%userprofile%\AppData\Roaming"
  7. set "Folder_2=%userprofile%\AppData\Local"
  8. set "Folder_3=%allusersprofile%"
  9. set "Folder_4=%userprofile%\Documents"
  10. set "LogFile=%temp%\GameFolder.txt"
  11. type nul >"%LogFile%"
  12. for %%a in ("%Folder_1%","%Folder_2%","%Folder_3%","%Folder_4%") do (
  13.     echo 正在处理文件夹 %%a
  14.     for /f "delims=" %%b in ('dir /b /s /a-d "%%a\*.sav"') do (
  15.         >>"%LogFile%" echo %%b
  16.     )
  17. )
  18. setlocal enabledelayedexpansion
  19. for /f "delims=" %%i in ('type "%LogFile%"') do (
  20.     set "File=%%i"
  21.     if "!File:%userprofile%\AppData\=!" neq "%%i" (
  22.         for /f "tokens=1-6 delims=\" %%a in ("%%i") do (
  23.             if not defined %%a\%%b\%%c\%%d\%%e\%%f (
  24.                 xcopy /e /y "%%a\%%b\%%c\%%d\%%e\%%f" "%DstFolder%\%%f\"
  25.                 set "%%a\%%b\%%c\%%d\%%e\%%f=1"
  26.             )
  27.         )
  28.     ) else if "!File:%allusersprofile%\=!" neq "%%i" (
  29.         for /f "tokens=1-3 delims=\" %%a in ("%%i") do (
  30.             if not defined %%a\%%b\%%c (
  31.                 xcopy /e /y "%%a\%%b\%%c" "%DstFolder%\%%c\"
  32.                 set "%%a\%%b\%%c=1"
  33.             )
  34.         )
  35.     ) else if "!File:%userprofile%\Documents\=!" neq "%%i" (
  36.         for /f "tokens=1-5 delims=\" %%a in ("%%i") do (
  37.             if not defined %%a\%%b\%%c\%%d\%%e (
  38.                 xcopy /e /y "%%a\%%b\%%c\%%d\%%e" "%DstFolder%\%%e\"
  39.                 set "%%a\%%b\%%c\%%d\%%e=1"
  40.             )
  41.         )
  42.     )
  43. )
  44. endlocal
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 xiaoyao202 于 2022-4-20 21:02 编辑

回复 27# Batcher


    谢谢大佬。测试可以用。能不能输出截取路径后的txt。不然不知道文件夹属于那个位置

TOP

回复 28# xiaoyao202
  1. @echo off
  2. chcp 65001
  3. REM 设置备份到哪个文件夹
  4. set "DstFolder=D:\Test"
  5. REM 设置截取路径后的游戏目录列表
  6. set "LogOutput=D:\Test\GameList.txt"
  7. REM 设置游戏存档路径
  8. set "Folder_1=%userprofile%\AppData\Roaming"
  9. set "Folder_2=%userprofile%\AppData\Local"
  10. set "Folder_3=%allusersprofile%"
  11. set "Folder_4=%userprofile%\Documents"
  12. set "LogTemp=%temp%\GameFolder.txt"
  13. type nul >"%LogTemp%"
  14. type nul >"%LogOutput%"
  15. for %%a in ("%Folder_1%","%Folder_2%","%Folder_3%","%Folder_4%") do (
  16.     echo 正在处理文件夹 %%a
  17.     for /f "delims=" %%b in ('dir /b /s /a-d "%%a\*.sav"') do (
  18.         >>"%LogTemp%" echo %%b
  19.     )
  20. )
  21. setlocal enabledelayedexpansion
  22. for /f "delims=" %%i in ('type "%LogTemp%"') do (
  23.     set "File=%%i"
  24.     if "!File:%userprofile%\AppData\=!" neq "%%i" (
  25.         for /f "tokens=1-6 delims=\" %%a in ("%%i") do (
  26.             if not defined %%a\%%b\%%c\%%d\%%e\%%f (
  27.                 >>%LogOutput% echo %%a\%%b\%%c\%%d\%%e\%%f
  28.                 xcopy /e /y "%%a\%%b\%%c\%%d\%%e\%%f" "%DstFolder%\%%f\"
  29.                 set "%%a\%%b\%%c\%%d\%%e\%%f=1"
  30.             )
  31.         )
  32.     ) else if "!File:%allusersprofile%\=!" neq "%%i" (
  33.         for /f "tokens=1-3 delims=\" %%a in ("%%i") do (
  34.             if not defined %%a\%%b\%%c (
  35.                 >>%LogOutput% echo %%a\%%b\%%c
  36.                 xcopy /e /y "%%a\%%b\%%c" "%DstFolder%\%%c\"
  37.                 set "%%a\%%b\%%c=1"
  38.             )
  39.         )
  40.     ) else if "!File:%userprofile%\Documents\=!" neq "%%i" (
  41.         for /f "tokens=1-5 delims=\" %%a in ("%%i") do (
  42.             if not defined %%a\%%b\%%c\%%d\%%e (
  43.                 >>%LogOutput% echo %%a\%%b\%%c\%%d\%%e
  44.                 xcopy /e /y "%%a\%%b\%%c\%%d\%%e" "%DstFolder%\%%e\"
  45.                 set "%%a\%%b\%%c\%%d\%%e=1"
  46.             )
  47.         )
  48.     )
  49. )
  50. endlocal
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 29# Batcher


    非常感谢大佬

TOP

返回列表