如何编写批处理文件以将文件放入MATLAB的bin目录中

时间:2015-07-22 06:20:22

标签: matlab batch-file cmd

我想编写一个批处理文件,通过它我可以将文件放在MATLAB的bin目录中。该批处理文件适用于任何带有MATLAB的PC。

我正在尝试以下命令:

Xcopy ".\abc.txt" "C:\Program Files\MATLAB\R2012b\bin" 

它正常工作,但由于MATLAB目录是硬编码的,因此无法在其他PC上运行。 有没有办法解决这个问题?

3 个答案:

答案 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"