Board logo

标题: [文件操作] [已解决]拖拉文件到bat脚本执行复制到指定目录代码修改求助 [打印本页]

作者: smdx    时间: 2023-3-16 00:36     标题: [已解决]拖拉文件到bat脚本执行复制到指定目录代码修改求助

用ChatGPT生成了拖拉文件到bat执行复制到指定目录的代码。
生成了2个不同的代码:
代码1 只可以复制单个文件、目录可以保持原目录结构复制到指定目录;
代码2 可以复制多个文件、目录只把下一层的内容复制到指定目录。
请教一下大佬们要怎么修改代码2能解决目录不改变结构复制到指定目录?谢谢


代码1,文件只能单个复制,目录能保持原结构复制。
  1. @echo off
  2. setlocal
  3. rem check if the script received a valid file or directory path
  4. if not "%~1"=="" (
  5.     set "source=%~1"
  6. ) else (
  7.     echo No file or directory path specified.
  8.     pause
  9.     exit /b 1
  10. )
  11. rem check if the source path exists
  12. if not exist "%source%" (
  13.     echo The source path does not exist: %source%
  14.     pause
  15.     exit /b 1
  16. )
  17. rem create or validate the test directory
  18. set "testdir=E:\test"
  19. if not exist "%testdir%" (
  20.     md "%testdir%"
  21. )
  22. rem copy the file or directory to the test directory
  23. if exist "%source%\*.*" (
  24.     xcopy /E /Y "%source%" "%testdir%\%~nx1\"
  25. ) else (
  26.     copy /Y "%source%" "%testdir%\"
  27. )
  28. echo Successfully copied %source% to %testdir%
  29. pause
  30. exit /b
复制代码
代码2,可以复制多个文件,目录只复制下一层内容到目标目录。
  1. @echo off
  2. set "dest=E:\test"
  3. :loop
  4. IF "%~1"=="" GOTO done
  5. IF EXIST "%dest%\%~nx1" (
  6.     set /p overwrite="File %~nx1 already exists in destination folder. Overwrite? (y/n): "
  7.     IF /i "%overwrite%"=="y" (
  8.         copy /y "%~1" "%dest%"
  9.         shift
  10.         Goto loop
  11.     ) ELSE (
  12.         shift
  13.         Goto loop
  14.     )
  15. ) ELSE (
  16.     copy /y "%~1" "%dest%"
  17.     shift
  18.     Goto loop
  19. )
  20. :done
  21. echo File(s) copied to %dest%
  22. exit
复制代码

作者: 77七    时间: 2023-3-16 07:22

本帖最后由 77七 于 2023-3-16 07:30 编辑

如果不需要判断是否已存在于目的文件夹,试试这样行吗
  1. @echo off
  2. set "test=D:\123"
  3. for %%a in (%*) do (
  4.         if exist "%%a\" (
  5.                 robocopy "%%a" "%test%\%%~nxa" /e
  6.         ) else (
  7.                 robocopy "%cd%" "%test%" "%%~nxa"
  8.         )
  9. )
  10. pause
复制代码

作者: smdx    时间: 2023-3-16 09:03

如果不需要判断是否已存在于目的文件夹,试试这样行吗
77七 发表于 2023-3-16 07:22



   非常感谢大佬,完美解决。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2