1.
SET GenFolder= C:\Users\administered\Desktop\t2\old_file
set path1=C:\Users\administered\Desktop\t1\crontab_master
set path2=C:\Users\administered\Desktop\t2\old_file
if not exist %GenFolder% (
echo %GenFolder%目录不存在,已创建该目录!
md %GenFolder%
move /y %path1% %path2%
) else (
echo %GenFolder%目录存在,直接移动
if "%path1:crontab_master=%"=="%path1%" (
echo 路径%path1% 中不包含字符串crontab_master
echo no
) else (
echo 移到文件夹%path1% 到 %path2%
move /y %path1% %path2%
)
)
if not exist %GenFolder% 判断文件夹是否存在,md %GenFolder% 文件夹不存在时则创建,
move /y %path1% %path2% 将path1下的文件移动到path2, /y 直接移动覆盖,不进行提示。
if "%path1:crontab_master=%"=="%path1%" 判断path1路径中是否包含字符串'crontab_master',如果包含改字符串则移动path1下的文件
echo 输出打印
2. 循环当前文件夹将指定文件移到另一个文件夹中
current_file_path = os.path.dirname(os.path.realpath(sys.argv[0])) old_path_test = os.path.join(current_file_path , 'old_filename')
@echo off & setlocal enabledelayedexpansion
if not exist %GenFolder% (
echo %old_file%目录不存在,已创建该目录!
md %old_file%
)
for /D %%a in (f"{old_path_test }") do (
set str1=%%a
if "!str1!" == "!str1:old_file=!" if "!str1!" == "!str1:crontab_master=!" (
echo 删除不包含old_file,不包含crontab_master的文件夹: %%a
::rmdir /s /q "%%a"
move /y "%%a" %C:\Users\administered\Desktop\t\old_file%
:: if exist "%%a" echo 未移到成功 & rmdir /s /q "%%a"
if exist "%%a" echo 未移到成功
)
)
for %%a in (f"{old_path_test }") do (
set str1=%%a
if "!str1!" == "!str1:bat=!" if "!str1!" == "!str1:whl=!" (
echo 删除不包含bat, 不包含whl的文件: %%a
:: del /s /q "%%a"
move /y "%%a" %C:\Users\administered\Desktop\t\old_file%
)
)
多个条件if判断写并列, :: 表示注释, rmdir 删除文件夹, del删除单个文件,
bat 文件编码为GBK即ANSI,输出中文不乱码
bat_name = 'updater.bat' bat_path = os.path.join(old_file, bat_name) old_filename = "old_file" old_path = os.path.join(old_file, old_filename) if not os.path.exists(old_path): os.makedirs(old_path) print('bat_path:', bat_path) # 测试需要移到文件的路径 old_path_test = os.path.join(old_file, old_filename) with open(bat_path, 'w', encoding='utf-8') as updater: updater.write(textwrap.dedent(f'''\ @echo off & setlocal enabledelayedexpansion CHCP 65001 echo 正在更新[{self.app_name}]最新版本,请勿关闭窗口... ping -n 2 127.0.0.1 taskkill -f -pid {pid} echo 正在复制[{self.app_name}],请勿关闭窗口... for /D %%a in ("{old_path_test}") do ( set str1="%%a" if "!str1!" == "!str1:{old_filename}=!" if "!str1!" == "!str1:{old_filename}=!" ( echo 删除不包含old_file的文件夹: %%a move /y "%%a" %{old_path}% ) ) for %%i in ("{old_path_test}") DO ( if not %%i=={bat_name} if not %%i=={old_filename}( echo 删除文件:%%i :: del /s /q "%%i" move /y "%%i" %{old_path}% ) ) for %%a in ("{old_path_test}") do ( set str1=%%a if "!str1!" == "!str1:{bat_name}=!" if "!str1!" == "!str1:{bat_name}=!" ( echo 删除不包含bat的文件: %%a move /y "%%a" %{old_path}% ) ) ping -n 2 127.0.0.1 xcopy /s /e /y /q "{new_file}\*" "{current_path}" ping -n 2 127.0.0.1 if exist "{new_file_dir}" rd /s /q "{new_file_dir}" echo 更新完成,等待自动启动{self.app_name}... ping -n 2 127.0.0.1 "{new_file_exe}" exit ''')) updater.flush()