我想编写一个批处理文件,通过它我可以将文件放在MATLAB的bin目录中。该批处理文件适用于任何带有MATLAB的PC。
我正在尝试以下命令:
Xcopy ".\abc.txt" "C:\Program Files\MATLAB\R2012b\bin"
它正常工作,但由于MATLAB目录是硬编码的,因此无法在其他PC上运行。 有没有办法解决这个问题?
答案 0 :(得分:2)
假设您正在搜索matlab
可执行文件的完整路径,例如matlab.exe
。我没有安装matlab
,但是下一个脚本可以提供帮助(操作xcopy
命令echo
仅用于调试目的...)。
已修改以确保文件是否真的被复制:
@ECHO OFF >NUL
SETLOCAL enableextensions
set "Executable=gimp-*.exe" :: change this line no narrow your search
set "CopyToFldr="
call :getExecutable "where"
if not defined CopyToFldr call :getExecutable "where /R C:\"
if defined CopyToFldr (
echo Xcopy ".\abc.txt" "%CopyToFldr%"
dir /B "%CopyToFldr%abc.txt"
Xcopy ".\abc.txt" "%CopyToFldr%"
dir /B "%CopyToFldr%abc.txt"
) else (
echo %Executable% not found
)
ENDLOCAL
goto :eof
:getExecutable
echo %~1
for /F "delims=" %%G in ('%~1 %Executable% 2^>Nul') do (
echo "%%~dpG" folder contains %%~nxG
set "CopyToFldr=%%~dpG"
)
goto :eof
用户命令提示符(cmd.exe
)输出:
==>D:\bat\SO\31555349.bat
where
where /R C:\
"C:\Program Files\GIMP 2\bin\" folder contains gimp-2.8.exe
"C:\Program Files\GIMP 2\bin\" folder contains gimp-console-2.8.exe
Xcopy ".\abc.txt" "C:\Program Files\GIMP 2\bin\"
File Not Found
.\abc.txt
Access denied
File Not Found
==>
从提升的命令提示符 输出(以管理员身份运行cmd.exe
):
==>D:\bat\SO\31555349.bat
where
where /R C:\
"C:\Program Files\GIMP 2\bin\" folder contains gimp-2.8.exe
"C:\Program Files\GIMP 2\bin\" folder contains gimp-console-2.8.exe
Xcopy ".\abc.txt" "C:\Program Files\GIMP 2\bin\"
File Not Found
.\abc.txt
1 File(s) copied
abc.txt
==>
答案 1 :(得分:0)
要获取MATLAB的安装文件夹(根文件夹),可以使用matlabroot
功能。
mr = matlabroot
mr =
C:\Program Files\MATLAB\R2014A_64
您可以使用fullfile
功能
bin
文件夹
dest = fullfile(matlabroot,'bin')
fullfile
连接路径,确保使用分隔符(/
或\
)并使用正确的分隔符(\
在Windows上/
在Linux上。)
此外,我建议使用内置的copyfile
函数从MATLAB中复制文件或文件夹,但我不知道Xcopy
- 它也可能适用。
由于这些是MATLAB函数,您可以将所有内容放在MATLAB脚本中,将其保存为whatever.m
,然后从命令行运行MATLAB以执行此脚本:
matlab -nodisplay -nosplash -nodesktop -r "run whatever.m; exit"
这也带来了它应该适用于任何操作系统的优势。
答案 2 :(得分:0)
下面的代码首先创建一个目录,然后复制你的文件,如果该目录已经存在,它将只复制文件。
MD "C:\Program Files\MATLAB\R2012b\bin" && Xcopy ".\abc.txt" "C:\Program Files\MATLAB\R2012b\bin" || echo Directory already exists || Xcopy ".\abc.txt" "C:\Program Files\MATLAB\R2012b\bin"