我正在编写一个充当快捷方式的脚本,让我想将输入发送到我的图片
@echo off
echo drop input
pause
move "%1" "C:\Users\%username%\Pictures"
pause
问题似乎是%1 /输入需要以某种方式描述。 因为当我放下一张图片时,它说 系统找不到指定的文件。
答案 0 :(得分:0)
@echo off
rem Prepare environment
setlocal enableextensions disabledelayedexpansion
:loopParameters
rem Variable to hold file name
set "file="
rem If a file has been dropped on batch file, retrieve if from parameters
rem If no file dropped, ask for one
if "%~1"=="" (
set /p "file=Drop file here:"
) else (
set "file=%~1"
)
rem Check if there is something to do. If not, the process has ended
if not defined file goto endProcess
if not exist "%file%" goto endProcess
rem Do the work
echo move "%file%" "C:\Users\%username%\Pictures"
rem Determine if there is something more to process
if not "%~1"=="" if not "%~2"=="" ( shift & goto :loopParameters )
:endProcess
rem Wait to see output of commands
echo.
pause
rem Clean and exit
endlocal
exit /b
它将处理放入批处理文件中的文件(无需先启动批处理文件)。如果启动批处理文件而不删除任何文件,它将要求处理一个文件。
如果文件被放入批处理文件中,资源管理器会生成要作为批处理文件的单独参数处理的文件列表。因此,第一个文件位于%1
,第二个位于%2
,...在此代码中,要处理的文件是从%1
检索的。处理完第一个文件后,如果有更多文件要处理,shift
命令用于“移动”参数列表,因此%2
的内容将位于%1
,{ {1}}将在%3
中,...这样,下一个要处理的文件将在每次迭代中再次位于%2
。
但是命令行的长度限制为8191个字符。当资源管理器在同一命令行中传递所选文件的完整列表时,如果选择了大量文件,则不会处理列表的最后部分。
答案 1 :(得分:0)
你需要命令中的tilda,如下所示,因为如果它没有tilda,那么掉落引用的iems就会失败。
move "%~1" "C:\Users\%username%\Pictures"