如何使用Windows CMD将文件名的副本保存到空白文本文档



我一直在尝试在我的闪存驱动器上使用Xcopy,正如读者可能知道的那样,这是一种非常有效地传输多个文件副本的方法。在实验过程中,我有了一个想法。我运行的代码(将在评论的末尾披露)被设置为从我的桌面复制文件,音乐,照片等。然而,在我的桌面上有一个特别大的游戏文件。当程序到达游戏文件时,它花了很长时间来复制文件,因为游戏运行在3D环境中,我需要这些代码快速有效地运行。所以,我的想法是:是否有一种方法来复制一个文件的名称(在这种情况下,游戏的名称,FTB),有程序复制文件的名称,然后在闪存驱动器上创建一个文本文件,其中代码正在运行,然后覆盖该文件的名称与复制的名称?

这是正在运行的代码,我知道它有一些明显的问题,但它正在工作:

@echo off
:: variables/min
SET odrive=%odrive:~0,2%
set backupcmd=xcopy /s /c /d /e /h /i /r /y /EXCLUDE:MyExcludes.txt
%backupcmd% "%USERPROFILE%Pictures" "%drive%allMy pics"
%backupcmd% "%USERPROFILE%Favorites" "%drive%allFavorites"
%backupcmd% "%USERPROFILE%Videos" "%drive%allVids"
%backupcmd% "%USERPROFILE%Documents" "%drive%allDocs"
%backupcmd% "%USERPROFILE%OneDrive" "%drive%allOnedrive"
%backupcmd% "%USERPROFILE%Desktop" "%drive%allDesktop"
%backupcmd% "%USERPROFILE%Network" "%drive%allOther devices"
copy "Bookmarks.bak" "all"
removedrive D: -L -H -A -W:1000
  1. 将大文件添加到myexcludes.txt文件中,这样它就不会复制

  2. 在备份驱动器上创建一个新文件,使用如下命令(假设文件名为mylargefilesname.ext)

     echo mylargefilesname.ext > "%drive%locationmylargefilesname.ext"
    

------ edit ------

要对所有.exe文件执行此操作,您可以排除*.exe,然后使用循环。

for /f %%f in ('dir /b "%USERPROFILE%Pictures*.exe"') do echo %%f > "%drive%allMy pics%%~nxf"

这是对dir /b "%USERPROFILE%Pictures*.exe"

的结果进行循环

对于输出的每一行,它将使用文件的文件名+扩展名(这就是nx部分所做的)将完整的文件路径回送到新文件夹

我知道这是复活一个旧线程,但我在互联网上发现了这个代码(它被复制了很多)没有明确的解释%odrive%初始化和%drive%的非初始化。

它不工作,因为他们遗漏了一些代码。下面是修复方法:

替换:

SET odrive=%odrive:~0,2%

:

SET odrive=%CD%
SET drive=%odrive:~0,2%

第一行获取当前目录为%odrive%,第二行去掉前两个字符(例如,C:)并将它们分配给%drive%

注意,脚本假设它是从可移动驱动器运行的。因此,您可以简单地将%drive%的所有实例替换为.,它将工作得一样好。

最新更新