CMD或BAT将文件从相对路径复制/替换为.lnk目标位置


1

示例:

我将有以下内容:

  • 文件夹包含:

    1. CMD或BAT文件
    2. 需要复制的文件/文件(例如:file1.exe和file2.exe)
  • 位于桌面的.lnk(例如:C:\ Users \ Home \ Desktop \ Example.lnk),它是(EX:D:\ folder \ Example.pdf)的快捷方式

我需要CMD / BAT文件从其当前相对位置复制file1.exe和file2.exe,并在读取它后将其粘贴或粘贴/替换到.lnk目标位置,即D:\ folder \

编辑


我尝试了以下命令将gravity.pdf替换为位于bat命令的同一文件夹中的另一个版本的gravity.pdf:

@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in (`type "C:\Users\Abdo\Desktop\Gravity.lnk ^| find "\" ^| findstr/b "[a-z][:][\\]"`) do (
  set _targetdir=%%~dpi
  )
rem copy the files
copy /y Gravity.pdf %_target%
endlocal

但是出现错误“命令的语法不正确”。

我想了解代码,canot得到%_target%将如何引用gravity.lnk的目标完整路径,在我的情况下现在是D:\ Books \

编辑2


我从代码中删除了一些插入的行,现在打开一个空的cmd黑色窗口,但没有任何变化:

代码:

@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in (`type "C:\Users\Abdo\Desktop\Gravity.lnk ^| find "\" ^| findstr/b "[a-z][:][\\]"`) do (set _targetdir=%%~dpi)
rem copy the files
copy /y Gravity.pdf %_target%
endlocal

Answers:


1

如何从相对路径复制/替换文件到.lnk目标位置?

使用以下批处理文件:

@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in (`type "C:\Users\Home\Desktop\Example.lnk" ^| find "\" ^| findstr/b "[a-z][:][\\]"`) do (
  set _targetdir=%%~dpi
  )
rem copy the files
copy /y file1.exe %_targetdir%
copy /y file2.exe %_targetdir%
endlocal

我的代码给出错误“命令的语法不正确”。

  • 你错过了命令中的"after 。lnkfor

  • %_target%应该%_targetdir%(我的批处理文件中的错误 - 现在已修复)。

以下是批处理文件的更正版本:

@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in (`type "C:\Users\Abdo\Desktop\Gravity.lnk" ^| find "\" ^| findstr/b "[a-z][:][\\]"`) do (
  set _targetdir=%%~dpi
  )
rem copy the files
copy /y Gravity.pdf %_targetdir%
endlocal

进一步阅读

  • Windows CMD命令行的AZ索引 - 与Windows cmd行相关的所有内容的出色参考。
  • find - 在文件中搜索文本字符串并显示找到它的所有行。
  • findstr - 在文件中搜索字符串。
  • parameters - 命令行参数(或参数)是传递给批处理脚本的任何值。
  • set - 显示,设置或删除CMD环境变量。使用SET进行的更改将仅在当前CMD会话期间保留。
  • type - 显示一个或多个文本文件的内容。
  • for / f - 针对另一个命令的结果的循环命令。

编辑我的帖子@davidpostill
thelordabdo 2016年

@thelordabdo你错过了命令中的"after 。检查我的答案,看看它与您的代码有何不同。lnkfor
DavidPostill

缺少的"是语法错误。如果您有语法错误,那么%_targetdir%将是未定义的。我的答案中也犯了一个错误(现已修复)。替换%_target%%_targetdir%(两次)
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.