Board logo

标题: [文件操作] [已解决,理想]批处理move移动文件,怎样排除指定文件不移动?谢谢 [打印本页]

作者: yyz219    时间: 2022-7-3 15:28     标题: [已解决,理想]批处理move移动文件,怎样排除指定文件不移动?谢谢

本帖最后由 yyz219 于 2022-7-4 11:56 编辑

我的PE桌面有不少的.lnk文件,我想将 “指定的.lnk文件(比如:CGI+路径.lnk Ghost.lnk 关机.lnk 移桌面文件.lnk)以外”  的  移动到  “桌面\不常用\”文件夹

move移动文件,怎样排除指定文件不移动?谢谢
【我希望:编辑“排除”方便】
***************************************************
我目前使用的代码是(本人觉得不科学):
  1. @echo off
  2. ::【全部(桌面文件)移到(桌面\不常用\)】
  3. MD   "X:\Users\Default\Desktop\不常用\"
  4. move "X:\Users\Default\Desktop\*.*"  "X:\Users\Default\Desktop\不常用\"
  5. ::【括号里(有空格加"")又移到(桌面)】
  6. cd /d "X:\Users\Default\Desktop\不常用\"
  7. for /r %%a in (CGI+路径.* Ghost.* 关机.* 移桌面文件.*) do move %%a "X:\Users\Default\Desktop\" >nul 2>nul
  8. exit
复制代码
********************************************************
正在使用代码:
  1. @echo off
  2. ::【全部(桌面文件)移到(桌面\不常用\)】
  3. MD "X:\Users\Default\Desktop\不常用\" & move "X:\Users\Default\Desktop\*.*"  "X:\Users\Default\Desktop\不常用\"
  4. ::【(排除列表.txt)中文件又移到(桌面)】
  5. for /f %%a in ('type "%~dp0移动排除.txt"') do move /y "X:\Users\Default\Desktop\不常用\%%a" "X:\Users\Default\Desktop\"
  6. exit
  7. 移动排除.txt:
  8. 【下面文件(重新移到)(桌面)(一个一行)】
  9. CGI+路径.*
  10. Ghost.*  
  11. 关机.*
  12. 移动排除.*
复制代码

作者: flashercs    时间: 2022-7-3 16:02

  1. @echo off
  2. ::【全部(桌面文件)移到(桌面\不常用\)】
  3. MD   "X:\Users\Default\Desktop\不常用\"
  4. for /f "delims=" %%a in ('dir /a-d /b "X:\Users\Default\Desktop\*.*"') do (
  5.   if /i not "%%~na"=="CGI+路径" if /i not "%%~na"=="Ghost" if /i not "%%~na"=="关机" if /i not "%%~na"=="移桌面文件" (
  6.     move "X:\Users\Default\Desktop\%%~nxa" "X:\Users\Default\Desktop\不常用\"
  7.   )
  8. )
  9. exit
复制代码

作者: yyz219    时间: 2022-7-3 16:22

flashercs 发表于 2022-7-3 16:02



    我试一试先,谢谢
作者: yyz219    时间: 2022-7-3 16:34

flashercs 发表于 2022-7-3 16:02



    成功了,非常感谢

另外,代码还能够再简单一下吗?
作者: yyz219    时间: 2022-7-3 20:44

回复 2# flashercs


    编辑排除不够方便(这个可能比较经常需要编辑)

能够修改一下吗?谢谢
作者: flashercs    时间: 2022-7-3 22:07

回复 5# yyz219


    PE下 有没有findstr.exe ?好像没有
作者: Batcher    时间: 2022-7-3 22:13

回复 1# yyz219
  1. @echo off
  2. md "X:\Users\Default\Desktop\不常用\"
  3. cd /d "X:\Users\Default\Desktop"
  4. for /f "delims=" %%a in ('dir /b /a-d *.lnk') do (
  5.     findstr /x /c:"%%a" "%~f0" >nul 2>&1
  6.     if errorlevel 1 (
  7.         move /y "%%a" "X:\Users\Default\Desktop\不常用\"
  8.     )
  9. )
  10. goto :eof
  11. :KeepList
  12. CGI+路径.lnk
  13. Ghost.lnk
  14. 关机.lnk
  15. 移桌面文件.lnk
复制代码

作者: beybeyzk    时间: 2022-7-3 22:14

回复 1# yyz219

for /f %%a in ('type D:\ID_log.txt') do move /y "X:\Users\Default\Desktop\%%a" "X:\Users\Default\Desktop\不常用\"

D:\ID_log.txt 里面自定义需要拷贝的文件名
作者: yyz219    时间: 2022-7-3 22:14

回复 6# flashercs


    这个不担心,我可以将正常系统里面的复制过去
作者: yyz219    时间: 2022-7-3 22:17

回复 8# beybeyzk

我试一试先 非常感谢
作者: yyz219    时间: 2022-7-3 23:30

回复  yyz219

for /f %%a in ('type D:\ID_log.txt') do move /y "X:\Users\Default\Desktop\%%a" "X:\ ...
beybeyzk 发表于 2022-7-3 22:14



    我需要的是要排除的(要求方便填写)
作者: flashercs    时间: 2022-7-4 00:20

  1. @echo off
  2. cd /d "X:\Users\Default\Desktop"
  3. set except="CGI+路径.*" "Ghost.*" "关机.*" "移桌面文件.*"
  4. ::【全部(桌面文件)移到(桌面\不常用\)】
  5. MD   "X:\Users\Default\Desktop\不常用\" 2>nul
  6. for %%b in (%except%) do (
  7.     set "#%%b=1"
  8.   )
  9. for /f "delims=" %%a in ('dir /a-d /b *.*') do (
  10.   if not defined #%%a move "%%a" "X:\Users\Default\Desktop\不常用\"
  11.   
  12. )
  13. exit
复制代码

作者: yyz219    时间: 2022-7-4 08:36

flashercs 发表于 2022-7-4 00:20


我试一试先 非常感谢
作者: yyz219    时间: 2022-7-4 08:49

回复 12# flashercs


    成功了,非常感谢
作者: yyz219    时间: 2022-7-4 08:50

回复  yyz219
Batcher 发表于 2022-7-3 22:13


我去试一试先,谢谢
作者: yyz219    时间: 2022-7-4 09:04

回复 7# Batcher


    非常成功,非常感谢




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