• you can use this improved script.

    --This script create a store procedure that Move All MDF - LDF Files

    --Wrote by Avi Grinberg

    create procedure MoveAllDatabaseFile

    @FileType char (3),@fullpath varchar(100)

    as

    if @FileType not in ('MDF','LDF','mdf','ldf')

    begin

    print '@FileType must be MDF or LDF (or lower case) and @fullpath should be like N''C:\DatabaseFiles\'' the script was terminated!.'

    print 'example of right syntax - exec MoveAllDatabaseFile ''MDF'',N''C:\DatabaseFiles\'''

    return

    end

    if @fullpath not like '%\'

    begin

    print 'The @fullpath must end with a ''\'' ,this script is terminated!. '

    return

    end

    declare @dbname as varchar (100)

    declare @LogicalFileName as varchar (100)

    declare @PhysicalFileName as varchar (100)

    declare @runalter as varchar(500)

    --Case LDF

    if @FileType = 'LDF' or @FileType = 'ldf'

    begin

    DECLARE CRS_db CURSOR LOCAL FAST_FORWARD

    FOR

    select sysdb.name as 'DBName',masterfiles.name as 'LogicalFileName',substring(right(physical_name,charindex('\',reverse(physical_name))),2,100) as 'PhysicalFileName'

    from sys.master_files masterfiles,sys.sysdatabases sysdb

    where masterfiles.database_id = sysdb.dbid

    and masterfiles.type_desc = 'LOG' and masterfiles.database_id > 4

    end

    --Case MDF

    else

    begin

    DECLARE CRS_db CURSOR LOCAL FAST_FORWARD

    FOR

    select sysdb.name as 'DBName',masterfiles.name as 'LogicalFileName',substring(right(physical_name,charindex('\',reverse(physical_name))),2,100) as 'PhysicalFileName'

    from sys.master_files masterfiles,sys.sysdatabases sysdb

    where masterfiles.database_id = sysdb.dbid

    and masterfiles.type_desc = 'ROWS' and masterfiles.database_id > 4 --not take system DB's

    end

    --Start execute MDF or LDF

    OPEN CRS_db

    FETCH NEXT FROM CRS_db INTO @dbname,@LogicalFileName,@PhysicalFileName

    WHILE @@FETCH_STATUS = 0

    BEGIN

    Set @runalter = 'Alter database ' + @dbname + ' modify file (name = ' + @LogicalFileName + ' , filename = N'''+ @fullpath + @PhysicalFileName + ''')'

    select (@runalter)

    FETCH NEXT FROM CRS_db INTO @dbname,@LogicalFileName,@PhysicalFileName

    END

    CLOSE CRS_db

    DEALLOCATE CRS_db