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

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

例子 :

我将获得以下内容:

  • 包含以下内容的文件夹:

    1. CMD 或 BAT 文件
    2. 需要复制的文件(例如:file1.exe 和 file2.exe)
  • 位于桌面的 .lnk(例如:C:\Users\Home\Desktop\Example.lnk)是(例如: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

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

我试图理解代码,无法理解 %_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

答案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 行相关的所有事物的绝佳参考。
  • 寻找- 在文件中搜索文本字符串并显示找到该字符串的所有行。
  • 查找字符串- 在文件中搜索字符串。
  • 参数- 命令行参数(或参数)是传递到批处理脚本的任何值。
  • - 显示、设置或删除 CMD 环境变量。使用 SET 所做的更改将仅在当前 CMD 会话期间保留。
  • 类型- 显示一个或多个文本文件的内容。
  • 对于/f- 循环命令以执行另一个命令的结果。

相关内容