将同一文件复制到不同的目录

时间:2013-03-21 14:50:53

标签: copy cmd rename copy-paste pascalscript

是否有一个程序(或ReNamer或.cmd的代码)将文件readme.txt复制到与readme.txt相同的目录中的每个目录?

ReNamer:http://www.den4b.com/?x=products&product=renamer(有一条PascalScript规则,允许用户编写自己的重命名规则。)

我每天从工作中获得50多个新目录,他们都需要这个文件。我手动完成了1000多次,希望有一个解决方案。

谢谢!

3 个答案:

答案 0 :(得分:0)

在批处理脚本中尝试此操作:

@echo off &setlocal
set "startdir=X:\start\folder"
for /d /r "%startdir%" %%i in (*.*) do copy readme.txt "%%~i"
endlocal

答案 1 :(得分:0)

@echo off
FOR /R %%f in (.) DO xcopy readme.txt %%f

将.bat文件保存在与readme.txt相同的位置,并且子目录必须与readme.txt位于同一文件夹中: 即

Desktop
    readme.txt 
    name.bat
    Sub1
    Sub2
    Sub3

等...

答案 2 :(得分:0)

以下是ReNamer的PascalScript代码,该代码将在每个已处理的文件夹中创建 Readme.txt 文件。

脚本在预览期间执行,因此为了安全起见,每次预览时都会询问是否创建 Readme.txt 。此脚本对内容使用ReadmeText常量,但也可以使其从系统上的文件复制 Readme.txt 文件的内容。它只会创建一个 Readme.txt 文件(如果尚不存在)。将所有文件夹放入ReNamer并使用此脚本。

const
  ReadmeName = 'Readme.txt';
  ReadmeText = 'Content of Readme file goes here!';
var
  Initialized: Boolean;
  ReadmePath: WideString;
  DoCreateReadmeFile: Boolean;
begin
  if not Initialized then
  begin
    Initialized := True;
    DoCreateReadmeFile := DialogYesNo('Create Readme file this time?');
  end;
  if WideDirectoryExists(FilePath) then
    ReadmePath := WideIncludeTrailingPathDelimiter(FilePath)
  else
    ReadmePath := WideExtractFilePath(FilePath);
  ReadmePath := ReadmePath + ReadmeName;
  if DoCreateReadmeFile and not WideFileExists(ReadmePath) then
    FileWriteContent(ReadmePath, ReadmeText);
end.

修改

下面的脚本将采用SourceFilePath定义的源文件并将其复制到目标文件夹。如果源文件不存在,它也会发出警告。

const
  TargetFileName = 'Readme.txt';
  SourceFilePath = 'C:\Temp\Readme.txt';
var
  Initialized: Boolean;
  TargetFilePath: WideString;
  DoCreateFiles: Boolean;
begin
  if not Initialized then
  begin
    Initialized := True;
    if WideFileExists(SourceFilePath) then
      DoCreateFiles := WideDialogYesNo('Create "'+TargetFileName+'" files this time?')
    else
      WideShowMessage('Source file does not exist!'+#13#13+SourceFilePath);
  end;
  if WideDirectoryExists(FilePath) then
    TargetFilePath := WideIncludeTrailingPathDelimiter(FilePath)
  else
    TargetFilePath := WideExtractFilePath(FilePath);
  TargetFilePath := TargetFilePath + TargetFileName;
  if DoCreateFiles and not WideFileExists(TargetFilePath) then
    WideCopyFile(SourceFilePath, TargetFilePath, False);
end.